A portion of the disclosure of this document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent files or records but otherwise reserves all copyright rights whatsoever. The following notice applies to the software, data, and/or screenshots that may be illustrated below and in the drawings that form a part of this document: Copyright© 2007, SAP AG. All Rights Reserved.
The present application relates generally to the technical field of algorithms and programming and, in one specific example, to the optimization of search techniques and user interfaces (UIs).
Search techniques are commonly based upon general principles or bases for conducting a search. These principles include often include basing the success of the search upon whether a match, or near match, for the search query is actually discovered and provided as a search result. Such an approach may not take into account the importance of context and relations between search terms when conducting a search.
Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of an embodiment of the present invention. It will be evident to one skilled in the art, however, that the present invention may be practiced without these specific details.
The leading digit(s) of reference numbers appearing in the Figures generally corresponds to the FIG. number in which that component is first introduced, such that the same reference number is used throughout to refer to an identical component that appears in multiple figures. Signals and connections may be referred to by the same reference number or label, and the actual meaning will be clear from its use in the context of the description.
Illustrated is a system and method for leveraging existing database functionality and operations (e.g., joins, inner and outer joins, cartesian product, difference, union, intersection, and other operations known in the art) to generate Natural Language (NL) based search results. These NL search results may be in the form of a rephrase (e.g., a semantic query). This semantic query may be in the form of a record or tuple value, existing as part of one or more database table attributes (e.g., domains), that are related via one or more relational phrases. The ability to perform various database operations on these tuple values also provides the basis for relating these tuple values through relational phrases (e.g., semantic relations). The generation of search queries and the retrieval of search results (e.g., semantic queries) based upon these search queries may be considered mixed (e.g., a mixed initiative) in that search queries may be made of one or more default domains, and/or may made of user-specified domains. In certain cases, the role of a user (e.g., a user as a manager, employee, or sales person) within an organization dictates the domains that may be searched and the relationships that may be established between the retrieved tuple values. In certain cases, an administrator may set certain privileges for a user to establish their role and the default queries (e.g., default semantic queries) they are entitled to see. These privileges may also determine the search terms, operators, or other tools for searching that a user may be able to use.
The illustrated system and method may reside as part of an enterprise search application such as SAP ENTERPRISE SEARCH™, or some other suitable enterprise search application. Further, this system and method may be divided into two parts: a training phrase (see e.g.,
Example Domains and Sub-Domains
In some embodiments, a domain is a synonym for category or concept, and likewise sub-domains are sub-categories, or sub-concepts. That is, for example, a term that can be assigned to a domain may also be assigned to a sub-domain, and during the parsing of a search query the query may be assigned or even parsed as part of a domain or sub-domain. Further, in some embodiments, a domain may be a category which, in turn, may be thought of as a set of entities that belong to the same type. For example, a user may enter any of the following search statements including ‘term1 term2’ (e.g., focusing here only on assignment of term1) such that a query 1 of “Mercedes with ID 4711-999 Barcelona” results in the following parsing and domain assignment: on domain level (e.g., ‘Mercedes with ID 4711-999’ ISA vehicle; Barcelona ISA city) or, optionally on the sub-domain level (e.g., “Mercedes with ID 4711-999′ ISA car; Barcelona ISA city”). Further, a query 2 of “car Barcelona” results in the following parsing and domain assignment: on domain level (e.g., “car ISA vehicle; Barcelona ISA city”), or optionally on sub-domain level (e.g., “car ISA car*; Barcelona ISA city”). Still further, an example query 3: “vehicle Barcelona” results in the following parsing and assignment-on domain level (e.g., “vehicle ISA vehicle*; Barcelona ISA city”).
Example Relations
In some embodiments, while hierarchical relations between domains are pervasive in ontologies/semantic webs, usually relations are considered to be “unidimensional”. Here, however, multi-dimensional relations may be implemented such that individual terms (e.g., as entered by users as part of a search query) can each be assigned to concepts of varying hierarchical levels (e.g., can be assigned to concepts or sub-concepts, and as a consequence, different types of relations with respect to their hierarchical relationship to each other may be considered). For example, based upon the following assignment: term1 ISA airplane; term2 ISA city, the following relations can be asserted: flies to, lands at airport of. And again, based upon the following assignments: term1 ISA vehicle; term2 ISA city, the following relations can be asserted: moves to; arrives at destination. In some embodiments, “moves to” can be considered to be a superordinate relation as compared to, for example, “flies to” etc.
Some embodiments may include stating that these or other kinds of semantic relations between/among relations can be expressed by means of rules or other notations which may resemble the notations which are being used to express hierarchical relationships a between domains and sub-domains, etc. Further, as stated above, the hierarchical level of which relations (e.g., hierarchical relations between semantic relations or groups of semantic relations) can be assumed to hold between two terms may depend on the hierarchical level of the domains/concepts/categories to which the particular terms have been assigned. Moreover, it should be added that as much as terms can be assigned to domains by default semantic processing and/or by user initiative, or by a combination of both, the same holds true for the selection of relations between assigned terms. While, for example, the system may propose a default or most probable relation between assigned terms, users could override this relation by selecting a different one, for example, from a set of relations proposed by the system on the basis of assigned terms. Additionally, for the sake of completeness, users may reassign any term to a different domain, initiating a dynamic updating of the set of available relations to select from. For example, when assigning a term to a more subordinate domain level, e.g., to a sub-domain, the resulting set of applicable relations between newly assigned terms may entail more concrete, subordinate relations (e.g., as compared to the initial set of relations to select from).
Example Searches
With regard to the actual searches that are conducted, users may be able to conduct searches and retrieve search results not based upon text containing the literal text string, e.g., “manager Sue,” but rather users may be able to retrieve search results relating to “manager who reports to Sue”, “Sue reports to manager”, or some other set of search results based upon training data or based upon data pre-existing in an enterprise database. And again, in certain cases, the name of a manager may be supplied as a search result in response to the search queries “manager who is supervising Sue” or “manager who reports to Sue”.
In the above examples, “Sue” and “Manager” may be tuples in one or more databases, and “who reports to” and “reports to” may be semantic relations supplied to link these tuples. For example, various semantic queries may be generated using the search phrase “manager Sue,” where “manager” (e.g., a term #1) and “Sue” (e.g., a term #2) are parsed out of the search phrase and the relation between these two words is determined. In cases where the terms have been assigned to a domain such as “persons,” it can be assumed that “Manager is a person” and “Sue is a person.” Based upon this assumption, certain relations may be inferred and semantic queries generated. Specifically, possible relations may be inferred such that term #1 relates to term #2 (term1person RELATION term2person), where the relation may be any one of a number of predefined relations (e.g., RELATIONperson-person:={direct|report to|buy from|sell to| . . . } etc.). These terms may be provided as training data (see e.g., training data packet 408 below). Example semantic queries resulting from the rephrasing of relations may include:
“Which manager reports to Sue?”
“Who is the manager of Sue?”
“Which manager buys from Sue?”
“From which manager does Sue buy?”
“To which manager does Sue sell?”
“Which manager sells to Sue?”
As previously illustrated, this rephrasing of a search phrase may occur such that terms in the same or different domains may be used to generate a semantic query.
In some embodiments, certain database principles and operations are leveraged to facilitate the generation of semantic queries. In cases where a search is conducted, for example, the search query “manager Sue” may be parsed and converted to a default search query in the form of “(manager ISA person) AND (Sue ISA person)”, wherein the semantic query “Who is the manager who directs Sue?” is generated that results in “Phil” as a search result based upon ajoin operation being performed. More to the point, tables containing “Sue” and/or the unique key value by which “Sue” is identified may be joined. In one embodiment, once joined, a list of semantic relations may be employed to join members of a sub-domain wherein a relationship can be inferred (see e.g., R(Employee; Manager)={reports to/is trained by/is hired by/ . . . }). In some embodiments, once the semantic query is generated and selected by a user, the search result (e.g., “Phil”) may be provided as a result of the execution of the join operation. This result is reflected in the below tables, where OrgUnit serves to uniquely identify each member of the set of persons.
Some embodiments may include inter-domain relations being represented. For example, “Sue” may be an owner of one company directing various managers such as “John” and “Mary.” These managers may be working for different companies. The fact that “Sue,” “John,” and “Mary” all work for different companies implies that they exist as part of the same or different domains. In one example, a search is conducted across domains wherein the search query is “owner Acme”. This search query may be transformed into a default search query (e.g., (owner ISA person) AND (Acme ISA company)) that generates the semantic query such as “owner [a person]—who sells—Acme [company]”; “owner [a person]—who buys—Acme [company]”. As with the above example, a join operation is used to facilitate this answer “Sue”, where the join occurs on a company code value in combination with the domain key value. This result is reflect in the below tables.
As will be more fully illustrated below, the basis for a semantic relation may be a default relation, a probabilistic relation, or even a relation based upon some AI-based data structure.
In some embodiments, the role of the user dictates the type of semantic query and search result set that are retrieved (e.g., a default semantic query may be retrieved). For example, if the user conducts a search as a manager, then the semantic query and search results illustrating persons who the user “is a manager of” may be returned as a default semantic query. In some embodiments, relations which are related to managing activities may be suggested by the method and system if they are suitable to the domains to which search terms are being assigned. Further, if, for example, the user who is conducting a search is an employee, then the persons to whom the user “reports to” may be returned as a default semantic query. And again, if, for example, the user's role is as a sales representative, then search queries that contain a name may be, by default, interpreted as referring to, for example, “business partner representatives” (e.g., business contacts). If the user's role is an accounting clerk, search queries containing a name may, by default, be interpreted as referring to “money transfer recipients”.
In some embodiments, this mixed initiative searching may be facilitated through a matrix search (e.g., a search using a matrix, or array of matrices such as a multi-dimensional array, as a data structure). A matrix search may include allowing a user to input (e.g., using a GUI) one or several search terms that seem critical to users, in order to retrieve information that matches their needs and expectations. Next, a user may be able to view search results to decide whether they match the user's needs and expectations, and whether additional search results or search result details should be displayed. Additionally, a user may be able to assign search terms to domains (domain assignment), thus identifying or narrowing the range of search results that qualify as meeting user's needs and expectations. Moreover, a user may be able to view proposed semantic relations between search terms, by means of rephrases that state the assumed question the user had in mind when entering search terms. The user may be able to identify the desired semantic relation—as expressed by a rephrase in natural language terms, and/or to alter the set of results and only secondarily to further narrow search results that meet user's needs and expectations, as indicated by the stated search terms. Still further, a user may be able to reassign any of the search terms to a different domain, or to replace existing search terms with the ones that were entered previously, or any combination of both in order to redefine the search result specification or to change the very relation which may have been inserted by means of system or user initiative, or a combination thereof.
Some embodiments may include a method based on both assignments of search terms to domains, and of interpretations of semantic relations between search terms that follow from the respective domain assignments. Specifically, based on the particular domain assignments, more specific semantic relations between concepts—as implied by the stated search terms and their domain assignments—can be retrieved. For example, a search term can be interpreted as the token for a particular type (e.g., a class), or, in optional wording, as an exemplar (or particular) that belongs to a concept (or universal). Types (or concepts), are subordinates of domains. Alternatively, domains/concepts/categories could be considered as synonyms and a subordinate/intermediate class of sub-domains/sub-concepts/sub-categories could be considered/introduced.
In some embodiments, even in the case where users do not make explicit assignments of search terms to domains, the relevant domains can be inferred with the help of the intermediate type (e.g., or (sub) concept). For example, by using a matrix search when users enter the search term “Volvo,” it can be inferred that “Volvo” is the token of the type “cars,” and, as a consequence, that the search term “Volvo” can be assigned to the domain of “vehicles.” Further, a matrix search can offer rephrases (e.g., explanations of semantic relations between search terms as they have been assigned to particular domains) that relate the search terms in meaningful ways.
Further, in another example, where an explicit assignment of a search term is used, such as “Mueller” and “manager” to the domain “Persons” (or “People”), respectively, this allows a user to retrieve the semantic relations that typically apply to this domain (e.g., an intra-domain relation). Specifically, “Mueller” (as token for the type “Manager”) directs a person of type “Employee” (as assigned to the domain “Persons”). Once the domain assignment is explicit, only data object attributes need to be taken into account. When the intra-domain relation is “between People,” only attributes need to be considered that are person-related: For example, for the data object “Contacts” the semantic relation needs to be applied only to the name attributes (e.g., relations between Name attributes, but not between Phone attributes of a contact). In one embodiment, search terms are assigned to domains in terms of “<search term> is a (type of) domain.” Other variants of assignments (e.g., semantic relations) can be employed as well, for example “is not a (type of),” or, “is part of,” etc.
In some embodiments, the following table provides the results of example searches (e.g., user input):
Example Method to Conduct a Search
Example Use Case in Conducting a Search
An Example System for Searching
Some embodiments may include a table 413 illustrating members of the domain of persons including, for example, employee, manager, company, and the names of certain people (e.g., Sue, Ed, Franz, Joe, and Mary). Also shown is a key value (e.g., 1 or 2) associated with each of the persons, and an attribute (e.g., type or token). Further, a table 415 is also illustrated containing a list of the various domains including, for example, people and companies with their respective key values (e.g., 1 or 2).
In some embodiments, the various entities listed under the domain of persons (e.g., members of a class) as shown in table 413 may be related through one or more of the relations illustrated in table 414 including, for example, “is a relative of”, “is managing”, “is instructing”, “is giving feedback to”, “is talking with”, “purchases”, “writes about”, “promotes” and “owns”. Further, illustrated in this table 414 is a domain relation or relations (e.g., person-person, person company, or company-person), and a relations id value. As to the domain relations, the data in this column illustrate what types of domains are being related, whereas the relation id values is a unique identifier value. For example, the rephrase “Sue is a relative of Ed” may be generated in cases where “is a relative of” may be used in relating two members of the domain of person. (e.g., “Sue” and “Ed”).
Example embodiments may include taking the training data 408 containing the phrase “employee Sue”, applying a default assignment and determining how to categorize the terms in the phrase “employee Sue”. For example, assuming that a default assignment is applied in the form of “employee is a person (e.g., people)”, then the term “Sue” will be assigned a key value of 1 as a person. Based upon this assignment various relations may be inferred such as:
“Sue is a relative of . . . ”
“Sue is managing . . . ”
“Sue is instructing . . . ”
“Sue is giving feedback . . . ”
“Sue is talking with . . . ”
These relations may be inferred, in part, due to the fact that Sue is a member of the domain of persons as evidenced by the assignment of a key value of 1.
In some embodiments, the example system 400 is used to make assignments of training data based upon certain percentile values. The assignment engine 412 may use a lookup table containing percentile values to determine the domain with which the training data will be associated. For example, the terms in the phrase “employee Sue” and in particular “Sue” will each be associated with the domain of people, for this domain has a highest probability value (e.g., 33%) associated with it. The probability values may be based upon, for example, the percentage of time the domain is searched, or some other suitable percentage basis.
Example embodiments may include the example system 400 used to insert training data directly into a domain. The assignment engine may be used to generate a manual assignment interface, wherein the training data is associated with a domain. For example, the phrase “employee Sue” may be inserted into a text box whose contents are automatically associated with the employee domain. In some embodiments, as will be more fully discussed below, multiple domains may be represented on a GUI with which training data may be associated.
Example Logic for Training a System
In some embodiments, the various above-illustrated insert operations (see e.g., operation 503, 505, and 507) are akin to Structured Query Language (SQL) or Multidimensional Expression Language (MDX) based operations such as INSERT and may be performed using these operations. In such an example, a domain may be a database table or other suitable data structure used to store data.
Example Searching Using Matrices
Some embodiments may include an implementation of a matrix search that is able to accommodate searching involving:
Example Logic for Searching
Some embodiments may include a query engine 1413 that processes the results of various database operations. For example, a search may be conducted for the terms “manager” and “Sue”. This search may include both table attributes and tuple values contained within each table. Illustrated is a table 1409 containing manager-related data uniquely identified via a social security number (e.g., “SSN”). The table 1409 is joined (see e.g., join operation 1410) with a table 1411. Contained within the table 1411 is employee data, where each employee is uniquely identified by their manager's social security number (e.g., “MGSSN”). The result of the join operation 1410 is reflected in table 1412, where it can be inferred that “Sue” is a manager of “Frank”. This table 1412 is then passed through the query engine 1413 to generate the rephrase 1414 (e.g., a semantic query), wherein “Employee” and “Sue”, are related via the semantic relationship “who reports to”.
Example embodiments may include table attributes pertaining to data related to various business processes, the results of such processes, and generalized descriptions of such processes. For example, these table attributes may include sales order data, purchase order data, employee job applications, scrap reports, production data reports, product development progress reports, or some other suitable attribute data. Further, these attributes may include product information (e.g., product specifications), customer information (e.g., address, contact information etc), vendor information (e.g., address and contact information), production plant information, and other suitable information.
Various edges representing semantic relations are also illustrated in
Example Interfaces for Searching
In some embodiments, a selection device, such as a mouse guiding a screen pointer, a light pen, touch screen, or other suitable device is used to generate an input signal (e.g., a semantic query or a search query) reflecting a desire on the part of the user 1401 to manipulate or otherwise change data presented on a display. The display may be a computer monitor or other suitable medium for presenting data. The presented data may be formatted using a floor plan divided into display areas (e.g. status display areas, message areas, feedback areas) and input areas (e.g., layout elements such as columns, tables, and panes) that can receive input via various widgets or objects including input specification widgets in the form of text boxes, or a combination thereof. Some well-known technologies used to generate a UI include, for example, a web page written using a Hyper Text Markup Language (HTML), and controlled by display logic written using JavaScript™, or VBScript™.
In some embodiments, a Voice User Interface (VUI) may be used in lieu of or in addition to a UI to allow a user 1401 to generate search queries. For example, in one embodiment a voice-based browser may be used to conduct searches and to provide search results and semantic queries to a user 1401. Such a browser may use, for example, web pages written using a voice based XML (e.g., Voice XML). Further, in some cases, some type of speech recognition software may be used to facilitate the generating of search queries and providing of search results and semantic queries to a user 1401.
Some embodiments may include one or more interfaces used to facilitate semantic searching. Common to these interfaces are a number of fields containing objects and widgets (e.g., UI elements) associated with columns, tables, panes, containers, and other suitable formatting objects (e.g., layout elements). In many cases the UI elements are inserted into the layout elements. These layout elements, in turn, reside in a layout as part of a floor plan. Technologies that may be used to implement these various UI elements and layout elements include: Cascading Style Sheets (CSS), a Hyper Text Markup Language (HTML), and even Asynchronous JavaScript and XML (AJAX) in the case of UI elements. In certain cases, AJAX may be used to merge certain functionality (see e.g., #A and #B illustrated below) using a dynamic rendering of possible term-domain assignments from which users may select at the time of entering their search terms. Put another way, a UI element written using AJAX may be used to assign a search query to a domain.
Some example layout elements include:
Example embodiments may include a floor plan that is directly tied to the application parts as specified in the previous section. On the level of the UI, each application part is portrayed as an area of the floor plan. To optimize the task support for users, areas #A and #B can be combined (see e.g.,
Example Semantic Mapping
For example, a domain of persons 2612 has a number of nodes representing people (e.g., a semantic map of people). Connecting these various nodes is any one of a number of links in the form of semantic relations. For example, a node 2620 is linked to node 2613 by a semantic relation 2615, such that node 2613 titled “Sue” “is a manager of” (e.g., the semantic relation 2615) “Mary” as represented by node 2620. This semantic map reflects certain principles of graph theory, networks, and/or mapping that involve nodes and edges between nodes, referenced herein as semantic relations. Further, illustrated is a node 2621 titled “Bob” that is linked to node 2613 via a semantic relation 2619, such that “Sue,” as represented by node 2613, “sells to” (e.g., the semantic relation 2619) “Bob” as represented by node 2621. Further, “Sue,” as represented by node 2613 “is a manager of” node 2622 or “Kelly.” Further, “Sue” represented by node 2613 “buys from” (e.g., the semantic relation 2625) node 2623 “Eli.” Further, “Sue,” as represented by node 2613, “is a manager of” “lone,” as represented by node 2618. Moreover, “Sue,” as represented by node 2613 “reports to” “Joe,” as represented by node 2614, where “reports to” is a semantic relation 2626. This semantic relation 2626 linking “Sue” and “Joe” also serves as a bridge link as is known in graph theory. Still further, “Joe” as represented by node 2614 “sells to” “Ito” as represented by node 2629. Joe is also a manager of “Franz” as represented by node 2616, and “Joe” “sells to” “Peter,” as represented by node 2617. In some embodiments, this semantic map may be cyclic, whereas in other embodiments it may be acyclic in nature. Still further in some embodiments, the notions of whether the map is acyclic or cyclic in nature is not relevant insofar as additional links may exist between the nodes, in addition to the semantic relations, such that a traversal can occur from any node in the semantic map to any other node of any other semantic map.
Example Logic for Semantic Mapping
In cases where decisional operation 3107 evaluates to “no” (e.g., false) a decisional operation 3102 is executed, wherein a determination is made as to whether the training data are members of the same domain. In cases where decisional operation 3102 evaluates to “yes” (i.e., true), an operation 3103 is executed that links members of the same domain. In cases where decisional operation 3102 evaluates to “no”, that is, false, an operation 3104 is executed that links a member of the domain to another member of a different domain. A further result of the execution of operation 3101 and the execution of operations 3103 and/or 3104, is a decisional operation 3105 that determines whether or not additional relations data exists. In cases where decisional operation 3105 evaluates to “yes” (i.e., true), decisional operation 3107 is re-executed. In cases where decisional operation 3105 evaluates to “no”, that is, false, an operation 3106 is executed that generates and transmits a semantic map, such as the semantic map contained in the domain of persons 2812.
Some embodiments may include the AI library 3110 having any one of a number of AI algorithms at its disposal to be used to determine a search result set. The AI algorithms contained in this AI library 3110 may be thought of as falling into one of two categories of AI algorithms: deterministic or stochastic. One distinguishing feature of stochastic algorithms, as compared to deterministic algorithms, is that the former may use some sort of nondeterministic feature such as random number generation or random node selection (see, e.g., genetic algorithms) in its optimization analysis, while the latter avoids such random, non-deterministic features. This random number generation may allow for the avoidance of pitfalls such as slavish adherence to predictability criteria during the optimization process. Some embodiments may include the use of deterministic or stochastic algorithms in combination (see e.g., genetic fuzzy algorithms).
Some example embodiments may include any number of deterministic algorithms stored in the AI library 3110 and implemented by operation 3109 including case-based reasoning, bayesian networks (including hidden markov models), neural networks, or fuzzy systems. The bayesian networks may include: machine learning algorithms including-supervised learning, unsupervised learning, semi-supervised learning, reinforcement learning, transduction, learning to learn algorithms, or some other suitable bayesian network. The Neural Networks may include: kohonen self-organizing network, recurrent networks, simple recurrent networks, hopfield networks, stochastic neural networks, boltzmann machines, modular neural networks, committee of machines, Associative Neural Network (ASNN), holographic associative memory, instantaneously trained networks, spiking neural networks, dynamic neural networks, cascading neural networks, neuro-fuzzy networks, or some other suitable neural network.
In addition to deterministic algorithms such as a fuzzy neural network, any number of stochastic algorithms may be implemented including: genetic algorithms, ant algorithms, t algorithms, or monte carlo algorithms (e.g., Simulated Annealing). Common to these algorithms is the use of randomness (e.g., randomly generated numbers) to avoid the problem of being unduly wedded to a local minima or maxima.
In some embodiments, an AI algorithm or AI rule may be used (e.g., to propose an appropriate relation between two assigned terms, terms which have been assigned to domains) by taking into account whether the relation can be inferred on the basis of data suggesting this relation (e.g., by containing values which can be used for this purpose), or, more implicitly, where the relation can be inferred on the basis of the attributes which can be identified with the domains to which terms have been assigned.
Example Block Diagrams
Example Data Table for Searching
Some embodiments may include the various databases (e.g., 411) being relational databases, or, in some cases, OLAP-based databases. In the case of relational databases, various tables of data are created and data is inserted into, and/or selected from, these tables using SQL or some other database-query language known in the art. In the case of OLAP databases, one or more multi-dimensional cubes or hyper cubes containing multidimensional data from which data is selected from or inserted into using a MDX may be implemented. In the case of a database using tables and SQL, a database application such as, for example, MYSQL™, SQLSERVER™, Oracle 81™, or 10G™, or some other suitable database application may be used to manage the data. In this, the case of a database using cubes and MDX, a database using Multidimensional On Line Analytic Processing (MOLAP), Relational On Line Analytic Processing (ROLAP), Hybrid Online Analytic Processing (HOLAP), or some other suitable database application may be used to manage the data. These tables or cubes made up of tables, in the case of, for example, ROLAP, are organized into a RDS or Object Relational Data Schema (ORDS), as is known in the art. These schemas may be normalized using certain normalization algorithms so as to avoid abnormalities such as non-additive joins and other problems. Additionally, these normalization algorithms may include Boyce-Codd Normal Form or some other normalization, and optimization algorithm known in the art.
Component Design
Some example embodiments may include the above-illustrated modules and operations being written as one or more software components. Common to many of these components is the ability to generate, use, and manipulate the above-illustrated UI elements and layout elements and the data associated therewith. These components, and the functionality associated with each, may be used by client, server, or peer computer systems. These various components can be implemented into the system on an as-needed basis. These components may be written in an object-oriented computer language such that a component oriented or object-oriented programming technique can be implemented using a Visual Component Library (VCL), Component Library for Cross Platform (CLX), Java Beans (JB), Enterprise JavaBeans (EJB), Component Object Model (COM), or Distributed Component Object Model (DCOM) or other suitable technique. These components are linked to other components via various Application Programming Interfaces (APIs), Business Application Programming Interfaces (BAPIs) and then compiled into one complete server and/or client application. The method for using components in the building of client and server applications is well known in the art. Further, these components may be linked together via various distributed programming protocols as distributed computing components.
Distributed Computing Components and Protocols
Some example embodiments may include remote procedure calls being used to implement one or more of the above-illustrated components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a GUI). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. These various levels can be written using the above-illustrated component design principles and can be written in the same programming language or a different programming language. Various protocols may be implemented to enable these various levels, and components contained therein, to communicate regardless of the programming language used to write these components. For example, an operation written in C++ using the Common Object Request Broker Architecture (CORBA) or Simple Object Access Protocol (SOAP) can communicate with another remote module written in JAVA™. These protocols include SOAP and CORBA or some other suitable protocol. These protocols are well-known in the art.
Example Computer System
The example computer system 3600 includes a processor 3602 (e.g., a Central Processing Unit (CPU), a Graphics Processing Unit (GPU) or both), a main memory 3601, and a static memory 3606, which communicate with each other via a bus 3608. The computer system 3600 may further include a video display unit 3610 (e.g., a Liquid Crystal Display (LCD) or a Cathode Ray Tube (CRT)). The computer system 3600 also includes an alpha-numeric input device 3617 (e.g., a keyboard), a user interface (UI) cursor controller 3611 (e.g., a mouse), a disk drive unit 3616, a signal generation device 3609 (e.g., a speaker) and a network interface device (e.g., a transmitter) 3620.
The disk drive unit 3616 includes a machine-readable medium 3622 on which is stored one or more sets of instructions and data structures (e.g., software) 3636 embodying or used by any one or more of the methodologies or functions illustrated herein. The software may also reside, completely or at least partially, within the main memory 3601 and/or within the processor 3602 during execution thereof by the computer system 3600. The main memory 3601 and the processor 3602 also constitute machine-readable media.
The instructions 3636 may further be transmitted or received over a network 3607 via the network interface device 3620 using any one of a number of well-known transfer protocols (e.g., Hyper Text Transfer Protocol (HTTP), Session Initiation Protocol (SIP)).
The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that stores the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the machine and that causes the machine to perform any of the one or more of the methodologies illustrated herein. The term “machine-readable medium” shall accordingly be taken to include solid-state memories, optical media, and magnetic media.
Marketplace Applications
One exemplary advantage of an embodiment of the present method and system is to facilitate the tailoring of search results based upon user-controllable NL statements. These NL statement may be used as training data to populate a database containing such search results. This system and method may reside as part of an enterprise search application such as SAP ENTERPRISE SEARCH™, or some other suitable semantic search application. By allowing users (e.g., IT administrators) to generate training data, search results may be based upon common uses of a search query and corresponding search results, where common uses may be industry-defined. For example, where a user conducting a search uses the terms “manager Sue,” the user may retrieve a search result not based upon text containing the literal text string (e.g., string based searching or “pattern matching”) “manager Sue,” but rather may retrieve search results relating to “manager who report to Sue,” “managers who instruct Sue,” or some other search results based upon training data supplied. As compared to string-based searching, this semantic searching can allow for more granular, unequivocal or refined searching to occur, such that typically ambiguous search terms can be uncovered.
In some embodiments, the search term “Manhattan”, with manhattan being optionally in any one of a number of domains such as “drinks”, “locations”, or “ships”, and the relation between them (e.g., in the case of “manhattan John”, with optional relations being based on the respective assignment of these terms to domains: {Manhattan cocktails [drinks] sold by John [a person]; manhattan [location] where John [a person] was born; manhattan [ship] steered by captain John [a person]}) can be readily disambiguated based upon assigning terms to domains and identifying suitable relations as they can be inferred on the basis of commonly understood relations between the respective domains or sub-domains.
Further exemplary advantages exist in that users may be able to enter just a few (e.g., 1-2) search terms without the need to use any specific notations (e.g., SQL query expressions) or a specific query language. Further, a user may be able to progressively (e.g., emulating the principle of progressive disclosure) specify their search intent. Some embodiments may include allowing users to take advantage of system support both at the level of the UI (e.g., allowing users to actively express their search intent through using the UI), or at the system level where users are presented with system-initiated rephrases of the users' initial search queries, such that users do not have to reiterate new search queries every time a search is performed.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that may allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it may not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Number | Name | Date | Kind |
---|---|---|---|
7526425 | Marchisio et al. | Apr 2009 | B2 |
20040030692 | Leitermann | Feb 2004 | A1 |
20050043940 | Elder | Feb 2005 | A1 |
20050222977 | Zhou et al. | Oct 2005 | A1 |
20060048055 | Wu et al. | Mar 2006 | A1 |
20060167931 | Bobick et al. | Jul 2006 | A1 |
20070192292 | Imielinski | Aug 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20080319947 A1 | Dec 2008 | US |