Creating and distributing domain-specific training materials can rely on software applications to receive, organize, store, and convey institutional knowledge to a variety of users. In some cases, content is provided using predefined templates and user interfaces associated with the software application used to store and convey the training materials. The training materials can be provided by users of varying expertise and do not always include input from domain experts having in-depth knowledge of the domain. In large multi-national enterprises, such as those operating in the oil and gas domain, localized knowledge specific to a piece of machinery, process, or software application deployed in those remote regions may not be distributed more broadly to other users in the enterprise outside of the remote regions. New hires, although possessing domain-specific education, can gain knowledge about the domain-specific machinery, process, or software by off-site training or job shadowing resulting in increased training costs and reduced productivity. In addition, job shadowing can be limited to specific aspects of a machine, process, or software application used in particular ways at any given location or project. Enterprises can develop best practices for collecting and disseminating training content, however providing training at a domain-expert-level on a wide range of topics, machines, processes, and/or software can be a non-trivial endeavor and can require a large amount of coordination and planning in large, often geographically distributed, organizations.
Developing and providing domain-specific training content to new and existing users of globally deployed machinery, processes, and/or software applications can be increasingly difficult. Domain-specific experts can be regionally localized and may not be available to contribute domain-specific training materials. For example, as software applications add new features and capabilities, users can have a difficult time gaining or maintaining proficiency using all of the features of the software application. In these situations, even routine configuration tasks can seem more difficult and error prone. This problem can be exacerbated in the industrial internet of things domain when large numbers of sensors and software applications may be used to monitor the operating parameters and condition of the deployed assets. Providing high-quality, domain-specific training content associated with these environments and the software applications used to manage them can be an increasingly difficult problem for large organizations.
An analytic engine can be used to execute features and functionality in multiple domain-specific software applications. The analytic engine can coordinate and deploy various analytic functions among the multiple domain-specific applications. The analytic engine can be coupled to a semantic knowledge calculator to create a system capable of collecting event data from the domain-specific applications. As the domain-specific applications are used the system can learn from the usage patterns and the applied analytic functions in order to generate recommendations that can be provided to users as training content. In this way, training content can be collected based on real-world usage of the domain-specific applications and/or the analytics applied to the applications. The training content can then be provided to users in a context that is specific to the user's objective instead of via pre-formatted, context unaware materials and user interfaces.
In general, systems and methods are provided herein for generating recommendations based on semantic knowledge capture. The recommendations can include training materials provided to a user in response to a user's input regarding a particular machine, process, or software application. The recommendations can be generated by collecting event data from domain-specific entities such as machines, sensors, services, and/or software applications. The event data can be processed using domain-specific ontological mappings in order to generate domain-specific event data. The domain-specific event data can then be used to generate a navigable graph including nodes representing domain-specific entities and edges representing associations or relationships between the domain-specific entities. The user can visualize and interact with the graph via a graphical user interface (GUI). The user can provide query input causing the graph to be re-rendered based on the query input. The GUI can further generate recommendations to the user based on the re-rendered graph. The recommendations can include training materials, but also executable functionality to be applied to the domain-specific entities and/or the associations between the domain-specific entities. In this way, a wide range of training content can be automatically captured and provided to a user in an interface allowing context-sensitive refinement and recommendation generation without requiring domain-experts to generate training materials on a case-by-case basis. By dynamically regenerating the graph and associated training materials and recommendations based on user input, users can explore a wider range of training topics than can be otherwise created and provided manually. In this way, a broader range of organizational knowledge can be shared throughout an organization with minimal input required from domain-experts using constrained formats and user interfaces. The system and methods described herein, can thus reduce training costs and improve the quality of training materials provided to users in a diverse, geo-graphically distributed organization.
In one aspect, a system for generating recommendations based on semantic knowledge capture is provided. The system can include a memory including instructions and a display including a graphical user interface (GUI). The system can also include one or more processors configured with executable instructions. The instructions, which when executed, can cause the processors to receive event data generated by one or more domain specific entities. The instructions, which when executed, can further cause the processors to format the received event data to confirm to a pre-defined format and aggregate the formatted event data. The instructions, which when executed, can also cause the processors to receive a plurality of ontological mappings and to apply the ontological mappings to the aggregated event data to generate domain-specific event data. The ontological mappings identifying one or more relationships associated with the vent data generated by two or more communicatively coupled domain-specific entities. The instructions, which when executed, can also cause the processors to generate a first graph based on the domain-specific event data using one or more visualization libraries. The first graph including a first plurality of nodes representing the one or more domain-specific entities and a first plurality of edges representing the one or more relationships between two or more nodes sharing event data. The instructions, which when executed, can further cause the processors to provide the first graph in a graphical user interface (GUI) and receive, via the GUI, a query input, the query input causing the processors to generate a second graph including a plurality of nodes and a plurality of edges associated with the query input. The second plurality of nodes and the second plurality of edges different than the first plurality of nodes and the first plurality of edges in the first graph. The instructions, which when executed, can further cause the processors to determine one or more recommendations based on the received query input and the nodes and edges in the second graph. The instructions, which when executed, can further cause the processors to provide, via the GUI, the one or more recommendations.
In another embodiment, the one or more processors of the system are further configured to receive the query input as a natural language search query and providing the one or more recommendations as a list of domain-specific entities and/or a list of contextual relationships corresponding to the received query input, the recommendations including auto-completion affordances to further determine the one or more recommendations.
In another embodiment, the one or more processors of the system are further configured to receive the query input as a selection of one or more graph rendering algorithms and generating the second graph based on the selected graph rendering algorithm.
In another aspect, methods for generating recommendations based on semantic knowledge capture are also provided. In one embodiment, the method can include receiving, by a processor, event data generated by one or more domain-specific entities. The method can also include formatting, by the processor, the received event data to conform to a pre-defined format and aggregating the formatted event data. The method can further include receiving, by the processor, a plurality of ontological mappings and applying one or more of the ontological mappings to the aggregated event data to generate domain-specific event data, the ontological mappings identifying one or more relationships associated with the event data generated by two or more communicatively coupled domain-specific entities. The method can also include generating, by the processor, a first graph based on the domain-specific event data using on one or more visualization libraries, the first graph including a first plurality of nodes representing domain-specific entities and a first plurality of edges representing one or more relationships between two or more nodes sharing event data. The method can further include providing the first graph in a graphical user interface (GUI) and receiving, via the GUI, query input, the query input causing the processor to generate a second graph including a second plurality of nodes and a second plurality of edges associated with the query input. The second plurality of nodes and the second plurality of edges different than the first plurality of nodes and the first plurality of edges. The method can also include determining, by the processor, one or more recommendations to be provided via the GUI based on the received query input and the second plurality of nodes and the second plurality of edges included in the second graph. The method can also include providing, via the GUI, the one or more recommendations.
In another embodiment, the method can also include receiving, by the processor, the query input as a natural language search query and providing the one or more recommendations as a list of domain-specific entities and/or a list of relationships corresponding to the received query input, the recommendations including auto-completion affordances to further determine the one or more recommendations.
In another embodiment, the method can also include receiving, by the processor, the query input as a selection of one or more graph rendering algorithms and generating the second graph based on the selected graph rendering algorithm.
In another embodiment, the GUI is configured to receive navigation input causing the first graph or the second graph to dynamically adjust the display of the first or the second plurality of nodes and first or the second plurality of edges based on the received navigation input.
In another embodiment, the first graph is automatically regenerated based upon receipt of new event data. In another embodiment, the new event data is received from an analytic engine as a result of configuring a domain-specific entity to be interfaced to the analytic engine or as a result of adding a feature to an existing domain-specific entity interfaced to the analytic engine.
In another embodiment, the one or more domain-specific entities include one or more domain-specific applications and the generated event data includes application programming interface invocations, web service invocations, microservice invocations, code executed in application GUIs, code executed in application back-ends, network cascaded events, user-triggered events, and scheduled events.
In another embodiment, the one or more domain-specific entities include an analytic engine. In another embodiment, the event data includes front-end reporting events and back-end reporting events. In another embodiment, the event data includes events generated based on execution of a single orchestration, execution of sequential orchestrations, and execution of non-sequential orchestrations.
In another embodiment, the received query input includes time and date criteria and the generated second graph displays the second plurality of nodes and the second plurality of edges based on the time and data criteria included in the query input.
In another aspect, a machine readable storage medium containing program instructions for generating recommendations based on semantic knowledge capture is also provided. The program instructions contained on the machine readable storage medium perform the method including receiving event data generated by one or more domain-specific entities. The program instructions also perform the method including formatting the received event data to conform to a pre-defined format and aggregating the formatted event data. The program instructions further perform the method including receiving a plurality of ontological mappings and applying one or more of the ontological mappings to the aggregated event data to generate domain-specific event data, the ontological mappings identifying one or more relationships associated with the event data generated by two or more communicatively coupled domain-specific entities. The program instructions also perform the method including generating a first graph based on the domain-specific event data, the first graph including a first plurality of nodes representing the one or more domain-specific entities and a first plurality of edges representing the one or more relationships between two or more nodes sharing event data. The program instructions further perform the method including providing the first graph in a graphical user interface (GUI) and receiving, via the GUI, query input, the query input received as a natural language search query and causing the processor to generate a second graph including a second plurality of nodes and a second plurality of edges associated with the query input. The second plurality of nodes and the second plurality of edges different than the first plurality of nodes and the first plurality of edges in the first graph. The program instructions also perform the method including determining a first one or more recommendations to be provided via the GUI based on the received query input and the second plurality of nodes and the second plurality of edges in the second graph. The program instructions also perform the method including providing, via the first one or more recommendations. The first one or more recommendations provided as a list of domain-specific entities and/or a list of relationships corresponding to the received query input and including auto-completion affordances to further determine a second one or more recommendations. The second one or more recommendations different than the first one or more recommendations.
These and other features will be more readily understood from the following detailed description taken in conjunction with the accompanying drawings, in which:
It is noted that the drawings are not necessarily to scale. The drawings are intended to depict only typical aspects of the subject matter disclosed herein, and therefore should not be considered as limiting the scope of the disclosure.
Generating domain-specific training materials can be an important requirement for organizations seeking to educate and share knowledge between organization members or with outside contacts. New employees can often possess domain-specific education but lack domain-specific knowledge regarding specific pieces of equipment, processes or computer-related technology, such as applications, analytical models, or data-driven control or automation systems. Training materials are typically developed statically, in pre-defined formats, often by individuals who are not subject matter experts in a particular domain to which the training relates. In addition, subject matter or domain-specific experts can be occupied performing other projects and not available to develop domain-specific training materials for broad consumption within an organization. Dynamically generating domain-specific training materials can also be limited by the tools or software applications used to receive, process, and distribute the training materials. For example, creating documents or presentation slides of the training material can constrain the user to specific, pre-defined formats, and may not support dynamic exploration of various aspects or sub-topics that are related to the domain-specific training materials. The costs associated with training programs, for example class-room or presentation-based training, can be high and require coordination of specialized facilities to accurately emulate or provide real-life experience on a particular piece of equipment or software application. Shadowing or apprentice-like training can facilitate knowledge transfer about a specific aspect of a domain-specific piece of equipment or application but can also result in transfer of locally limited or tribal knowledge that may be pertinent in one context or location but may not be applicable on the same tools or application outside of the location where the training is occurring. In large, distributed multi-national enterprises, such as those in the oil and gas or energy production domains, providing personnel with the highest quality domain-specific training materials can be a non-trivial undertaking and can require a large degree of centralized planning and coordination to generate and disseminate the training materials effectively throughout the enterprise.
A training system is provided herein including systems, methods, and computer-readable mediums for generating recommendations based on semantic knowledge capture. The generated recommendations can facilitate user-driven, self-paced training and knowledge transfer of domain-specific knowledge and can enable a dynamic, explorative experience for users seeking to learn more about related aspects of the domain-specific knowledge. The recommendations can be generated in response to user input provided as queries. The queries can also cause the training system to generate a navigable graph that is contextually associated with the input query. The improved training system can generate the recommendations and the navigable graph based on receiving, formatting and aggregating event data generated from various domain-specific entities, such as equipment, processes or services, and/or software applications used throughout an organization or enterprise. The event data can be refined using ontological mappings to provide a more accurate, domain-specific characterization of the event data. The ontologically-mapped event data can then be used to construct a graph including domain-specific entities represented as nodes and contextual relationships between the domain-specific entities represented as edges between the nodes. The graph can be provided to a user in a graphical user interface (GUI) to allow exploration of the domain-specific entities and contextual relationships that can exist between the domain-specific entities. By interacting with the GUI and providing query input, the graph can be updated to display nodes and edges that are associated with the query input.
Based on the query input and the contents of the updated graph, the GUI can further generate recommendations associated with the query input and/or the nodes and edges in the updated graph. The recommendations can inform the user of various tasks, actions, analytics, evaluations, configurations or related functionality associated with the domain-specific entities corresponding to the query input. In this way, training materials can be autonomously collected based on real-world user interaction with the domain-specific entities without the need for subject matter experts to contribute training materials and content in pre-defined formats or based on specific training program schedules. A user querying the improved training system can be afforded a broader scope of training material than may otherwise be available based on the event data collected from the domain-specific entities. In addition, the GUI of the improved training system can provide a unique interface for generating recommendations and training materials related to query inputs associated with domain-specific entities. The GUI allows a user to navigate and explore a visual depiction of domain-specific entities and the context of the associations that can exist between them. As a result, users of the improved training system can explore and consume a broader array of training materials than may be provided by conventional methods, as well as receiving a richer training experience when evaluating or assessing related training content associated with the domain-specific entities corresponding to the user's query input.
Embodiments of systems and corresponding methods for determining a route plan identifying assets from which additional condition monitoring data is to be collected are discussed herein. However, embodiments of the disclosure can be employed for determining a route plan identifying assets based on a variety of asset attributes without limit.
One of the servers 115 is configured to host a system for generating recommendations based on semantic knowledge capture. For purposes of load balancing, multiple servers 115 can be configured to host the system for generating recommendations based on semantic knowledge capture. As discussed herein, the system for generating recommendations based on semantic knowledge capture enables event data generated by domain-specific entities to be captured, processed and provided via a GUI so that users can interact with the GUI and receive recommendations associated with the domain-specific entities as training material. The recommendations can be dynamically determined based on query input provided by a user. The system, method, and computer-readable medium for generating recommendations based on semantic knowledge capture can be implanted within the exemplary architecture 100 shown in
The servers 115 can be any device having an appropriate processor, memory, and communications capability for hosting data encoder service. The clients 105 to which the servers 115 are connected over the network 110 can be, for example, desktop computers, mobile computers, tablet computers, mobile devices (e.g., a smartphone or PDA), or any other devices having appropriate processor, memory, and communications capabilities. In certain aspects, one or more of the servers 115 can be a cloud computing server of an infrastructure-as-a-service (IaaS) and be able to support a platform-as-a-service (PaaS) and software-as-a-service (SaaS) services.
The network 110 can include, for example, any one or more of a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), the Internet, and the like. Further, the network 110 can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.
As shown in
In some embodiments, the domain-specific entities 205 can include equipment, machinery or industrial assets used to perform operations specific to the domain, such as the oil and gas domain. The domain-specific entities 205 can include individual machines, for example compressors or motors, as well as components of individual machines, such as a compressor shaft or a motor power supply. Typically, in oil and gas energy production environments, the domain-specific entities 205 can include a large variety of rotating or reciprocating equipment such as a motor, a gas turbine, a heat exchanger, a centrifugal pump, a centrifugal compressor, a fan, a reciprocating compressor, a generator, a steam turbine, a wind turbine, a portion of pipe, an axial compressor, a screw compressor, a gear, a turbo expander, a blower, an agitator, a mixer, a pulp refiner, a ball mill, a crusher, a pulverizer, an extruder, a pelletizer, and a cooling tower. The domain-specific entities 205 can be deployed in industrially hazardous environments making it difficult to safely assess the condition or state of the asset by collecting condition monitoring data from the asset in a direct, hands-on manner. Sensors can be configured to interface with the domain-specific entities and provide sensor data identifying measurements of the operational parameters of the domain-specific entities 205. The sensors can also be a domain-specific entity 205 configured to operate with the training system 200.
As further shown in
Additionally, or alternatively, the analytic engine 210 can be used to execute features and functionality of the domain-specific entities, such as domain specific entities 205A-205C as well as other computing entities which can be coupled to the training system. The features and functionality to be executed by the analytic engine 210 can be referred to as orchestrations. The analytic engine 210 can generate event data associated with a single orchestration, as well as sequential orchestrations or non-sequential orchestrations. An orchestration can represent a single analysis or objective as well as a particular workflow to be performed in regard to a specific analysis or task. Orchestrations can also be connected in a sequence, such as a recursive loop in which multiple variants of input data are evaluated in an optimization process. In some embodiments, the domain-specific entities can use capabilities of the analytic engine 210 to offer new capabilities, features or services. The analytic engine 210 can also generate event data based on user or system driven actions that are performed in regard to the analytic engine 210. In addition, the analytic engine 210 can generate event data corresponding to the domain-specific entities 205 to which it can be operatively coupled.
As shown in
As further shown in
As shown in
As shown in
The system 200 allows usage patterns of equipment, application, or services to be collected and evaluated to provide insight about users, domain-specific entities 205, models, orchestrations and system components of the analytic engine 210. Over time, as usage patterns evolve, the graph 235 is continually updated without requiring periodic event data uploads or software updates. The system 200 can thus provide greater understanding of the operational metrics of the system such as identifying bottlenecks, critical components, expected and aberrant user behavior, and anomalies. Additionally, the system 200 can enable a better understanding of the usage patterns associated with the domain-specific entities 205 that can be used to provide unambiguous insight into product roadmap and/or usability or design considerations for the domain-specific entity.
Returning to the earlier example configuration of the domain-specific entities 205A-205C, and continuing the discussion of
The graph 235 can be generated by the semantic knowledge calculator 220 based on the event data 215 received from the domain-specific entities 205 and the analytic engine 210. Based on processing the event data by applying the ontological mappings 225 to generate domain-specific event data, a network of domain-specific entities 205 associated with the domain-specific event data, represented as nodes, and relationships between the nodes, represented as edges, can be generated as graph 235. The edges can describe a variety of relationships that can exist between the nodes. For example, the edges can include usage patterns, associations, attributes, membership, or contexts related to the association between two or more nodes such as have/are assigned to, have role definitions/belongs to, has one or more of, use/add up to, consume/are consumed by, is a class/is a member of a class, is a type of, have role definitions/belongs to, upload/uploaded by, publish/published by, configure/configured by, select/selected by, test/tested by, deploy/deployed by, save/saved by, read/read by, write/written by, execute/executed by, contains/is part of, visualized/are rendered by, and are mapped to/are used by.
Additional edge types can be described in regard to user-related events or system-related events. One example of user-related edge type can include event data generated by a web browser in response to a user selecting a link displayed on a web site. In this example, upon selection of the link, the web browser redirects the user to a new web site. The edge can represent the result of the selecting the link, for example the redirection to the new web site. In a second example of user-related edge types, a user can interact with a visualization, such as a graph within a knowledge training system, such as the training system described herein, to receive recommendations. In this example, the user may select a recommendation from among an ordered list of recommendations. The selected recommendation can cause a domain-specific entity to implement or execute a function associated with the operation of the domain-specific entity. For example, upon selecting a recommendation to start a well motor in an oil and gas production system, the training system can generate event data associated with executing control functions to provide power to the well motor and initiate operation of the well motor.
System-related edge types can include relationships associated with system-to-system interactions. For example, in a deployment of microservices, an initial user input may trigger a series of events between multiple disparate microservice components. Event data can be generated as the microservice components are called by other microservice components and the edge type can describe the attributes of the invocations or calls between the microservice components, such as synchronous calls or asynchronous calls.
In some embodiments, the edge types can represent combinations of system-related events and user-related events. For example, a monitoring system configured to monitor a well pump that is producing oil or gas in an energy production operation can receive alerts when the pump operating conditions are outside of specified ranges. The event data generated by the monitoring system can include measures of criticality to enable a user to validate that the alarm is accurate or to confirm the alarm is a false positive. A user can thus elect to ignore or suppress the false positive alarm data. The edge types in this example can include system-related edge types relating to the alerts generated by the monitoring system, as well as user-related edge types relating to the suppression of alarms including certain measures of criticality for which the user determined the alerts were false positives. The action of the user to suppress the alarm can be event data that is provided back to the training system so that the training system can learn to suppress alarms for such events in the future (and thereby reduce the generation of edge types related to such events), making the training system a self-learning and more efficient training system.
Continuing the previous example, the graph 235 includes multiple edges, such as edge AB, AD, BD, BC, CD, DE and CF, each of which can describe a relationship or usage pattern associated with the two nodes that the edge corresponds to. For example, edge AB connects node A (e.g., the controller, described as domain-specific entity 205A1) and node B (e.g., one of the sensors, described as domain-specific entity 205A2). Similarly edge AD connects node A and node D (e.g., the motor, described as domain-specific entity 205A4). The edge AB can represent the context in which event data is passed between the controller (node A) and the sensor (node B). Edge AB can define, a relationship between the controller and the sensor such as configures/is configured by. Similarly edge AD can represent the context in which event data is passed between the controller (node A) and the motor (node D) such as controls operation/operation is controlled by. In this way the graph 235 can describe all nodes and relationships that can exist between nodes in a graph provided to the user in a GUI, such as GUI 230. The graph 235 can be navigable, or browsable, by a user to zoom in/out, reposition, and can enable interactive exploration of information related to the nodes and/or edges in the graph 235. For example, a user can click on node A and view information associated with the controller (e.g., domain-specific entity 205A1). Additionally, or alternatively, by clicking on edge AD, a user can receive information describing the context in which the operation of the motor (node D) is determined or performed by the controller (node A).
As further shown in
As shown in
As further shown in
The client 105 and the server 115, e.g., server 115C are connected over the network 110 via respective communications modules 315 and 330. The communications modules 315 and 330 are configured to interface with the network 110 to send and receive information, such as events, event data, event message, usage pattern data, requests, responses, and commands to other devices on the network. The communications modules 315, and 330 can be, for example, modems or Ethernet cards.
The server 115C includes a processor 335, a communications module 330, and a memory 340 that includes one or more machine readable storage mediums containing program instructions for causing a computer to generate recommendations based on semantic knowledge capture. The processor 335 of the server 115C is configured to execute instructions, such as instructions physically coded into the processor 335, instructions received from software in memory 340, or a combination of both. For example, the processor 335 of the server 115C executes instructions to generate recommendations based on semantic knowledge capture of event data associated with one or more domain-specific entities that may be output to application 320 for display on client 105 in the GUI 230 of display 325. The server 115C also includes a memory 340 configured with one or more data content modules to store event data 215, ontological mappings 225, and rendering algorithms 345. The rendering algorithms 345 can be used to visualize the network of nodes and edges in one or more ways. The memory 340 of server 115C is also configured with one or more data processing modules to receive and process event data, generate knowledge graphs and recommendations. The memory 340 includes a semantic knowledge calculator 220 capable of receiving event data and query input transmitted from servers 115 and client devices 105, respectively. The semantic knowledge calculator 220 includes an event data formatter 350 to format the received event data using one or more pre-defined formats and aggregate the formatted event data. The semantic knowledge calculator 220 also includes an ontology mapper 355 configured to apply ontological mappings 225 to the aggregated event data in order to generate domain-specific event data. The semantic knowledge calculator 220 also includes a graph generator 360. The graph generator applies the rendering algorithms to the domain-specific event data to generate graphs 235 and 245. The semantic knowledge calculator 220 also includes a recommendation engine 365 configured to generate recommendations and training material based on the generated graphs 235 and 245 as well as in response to query input 240. The memory 340 of server 115C is further configured with one or more data content modules to store graphs 235 and 245 as well as recommendations 250. Previously determined versions of the graphs 235 and 245 as well as previously determined versions of the recommendations 250 can be input to the semantic knowledge calculator 220 to generate more accurate graphs and recommendations in the future based on the previously determined graphs and recommendations. Memory 340 can output the graphs 235 and 245 as well as the recommendations 250 to processor 335 and communication module 330 for transmission to the client 105. Once received, the client 105 can provide the graphs 235 and 245 as well as the recommendations 250 to a user for display in the GUI 230 that is configured in display 325.
The client 105 includes a processor 305, the memory 310, and the communications module 315. The memory 310 includes application 320. For example, application 320 may include a web browser, a training application, a condition monitoring application, a domain-specific application, a modeling and simulation application or environment, or a data analysis application. Application 320 may include, but is not limited to, any application used in an organization to receive, manage, and/or disseminate training materials or recommendations intended to train users in regard to a domain-specific entity, technology, process, or method. The client 105 also includes an input device (not shown), such as a keyboard or a mouse. The processor 305 of the client 1005 is configured to execute instructions, such as instructions physically coded into the processor 305, instructions received from software in memory 310, or a combination of both. For example, the processor 305 of the client 105 executes instructions to transmit query input generated from or received at the client device 105 to server 115C for storage and processing to generate recommendations based on semantic knowledge capture. In some embodiments, the application 320 and/or the client 105 can include a knowledge agent or an interactive agent, such as a chatbot program that is configured to receive training or query inputs and provide the inputs to server 115 so that recommendations related to the inputs are generated and returned to a user interacting who is with the chatbot program.
The techniques described herein may be implemented as method(s) that are performed by physical computing device(s); as one or more non-transitory computer-readable storage media storing instructions which, when executed by computing device(s), cause performance of the method(s); or, as physical computing device(s) that are specially configured with a combination of hardware and software that causes performance of the method(s).
For example, in operation 405, the semantic knowledge calculator 220 receives event data 215 generated from the domain-specific entities 205. The received event data can be further processed in operation 410 where the event data formatter 350 can format the received event data according to one or more predefined formats. The predefined formats may be stored in memory 340 and used to convert, alter or otherwise confirm the received event data into a format that is more readily usable for aggregation of event data, application of ontological mappings 225, or generation of graphs 235 and/or 245. The event data formatter 350 can further aggregate the formatted event data prior to further processing.
In operation 415, the semantic knowledge calculator 220 receives ontological mappings 225 and applies the ontological mappings 225 to generate domain-specific event data. The raw event data generated by the domain-specific entities 205 and the aggregated event data formatted by the event data formatter 350 may not include the domain-specific attributes or characterizations necessary to generate a network graph depicting the domain-specific entities 205 (e.g., as nodes) and the context of the relationships between the domain-specific entities 205 (e.g., as edges). Thus, the semantic knowledge calculator 220 includes an ontology mapper 355 configured to apply ontological mappings 225 to the aggregated event data. The ontological mapper 355 can process the aggregated event data using one or more look up tables, heuristics, or search and replace mechanisms to generate domain-specific event data that can be used to generate a knowledge graph associated with the domain-specific entities. In some embodiments, the ontology mapper 355 can receive the ontological mappings 225 from the memory 340, as shown in
In operation 420, the semantic knowledge calculator 220 generates a first graph and provides the first graph in a GUI. Based on generating the domain-specific event data, the graph generator 360 configured within the semantic knowledge calculator 220 can use one or more visualization libraries to generate a graph, such as knowledge graph 235 in a GUI, such as GUI 230. The visualization libraries can be stored in memory 340 or can be stored on one or more servers 115 that are communicatively coupled to the server 115 configured with the semantic knowledge calculator 220. The GUI 230 can include a portion of the interface for displaying the graph 235 and can also include a portion of the interface configured with graphical affordances, icons, and/or widgets associated with functionality to visually manipulate or navigate the graph within the GUI 230 based on user input. Further discussion of the GUI 230 will be described in relation to
In operation 425, the GUI 230 receives query input. The query input, such as query input 240 described in relation to
In operation 430, the semantic knowledge calculator 220 generates a second graph. Based on receiving query input 240, the graph generator 360 configured within the semantic knowledge calculator 220 can apply one or more visualizations libraries to generate an updated graph, such as graph 245 shown in
In operation 435, the semantic knowledge calculator 220 determines recommendations. Based on the domain-specific entities included in graph 245 and/or the query input 240, the recommendation engine 365 that can be configured within the semantic knowledge calculator 220 determines recommendations by issuing queries or running algorithms against the knowledge graph 245. In some embodiments, the recommendations are determined using a query language or a semantic query language, such as SPARQL which is a recursive acronym describing a Resource Description Framework (RDF) query language. A RDF query language is an exemplary semantic query language for databases that is able to retrieve and manipulate data stored in RDF formats. SPARQL allows for queries which can include triple patterns or triplestores, conjunctions, disjunctions, and optional patterns. In some embodiments, the recommendations can be determined using similarity-based algorithms, such as minimal distance algorithms, clustering algorithms, and/or nearest neighbor algorithms. The determined recommendations can be tasks, suggestions, executable or callable functionality, and/or domain-specific assets that are most semantically or contextually relevant to the domain-specific entities included in graph 245 and/or the query input 240. The recommendations can include auto-completion mechanisms or affordance to allow a user to further select from one or more variants related to a particular recommendation. For example, a recommendation can include a suggestion to optimize a well model for a well that is included in the domain-specific entities 205 that are included in the graph 245. The recommendation engine can generate a recommendation to optimize a well model and the recommendation can further include or suggest multiple optimization techniques that can be applied to optimize the well model in a specific manner. In some embodiments, the determined recommendations can be stored in memory 310 of the client 105 or the memory 340 of the server 115C.
In operation 440, the semantic knowledge calculator 220 provides the recommendations via the GUI. The user can view the recommendations 250 and take further action based on the recommendations 250 in GUI 230 of client 105. The GUI 230 can include a predefined interface or include a user-configurable interface for viewing the recommendations 250 and/or the graph 235 and 245. Further discussion of the GUI 230 will be described in relation to
The GUI 230 shown in
As shown in
As shown in the non-limiting examples illustrated in
The discussion of
As shown in
As shown in
As further shown in
As further shown in
In some embodiments, the rendering algorithm can include algorithms that are associated with the visualization selected in the visualization input 510. For example, as shown in
As shown in
Based on receiving a single form of query input 240 or a combination of the aforementioned forms of query inputs 240 provided in the search input 505, the visualization input 510, the rendering algorithm input 515, and/or the date criteria input 520, the GUI 230 can generate or regenerate the graph 245 in the display panel 525 according to operation 430 as described in relation to
As shown in
The recommendation engine 365 can determine the recommendations 555 to be provided in the GUI 230 based on the nodes and edges determined by the graph generator 360 to be included in and displayed in graph 245. In some embodiments, the recommendation engine 365 can determine the recommendations 555 based on the single or combination of inputs provided in the query input 240, the visualization input 510, the rendering algorithm input 515, and/or the date criteria input 520 in the GUI 230 in addition to the contents or graph 245. In some embodiments, the recommendation engine 365 can determine the recommendations 555 based only on the single or combination of inputs provided in the search input 505, the visualization input 510, the rendering algorithm input 515, and/or the date criteria input 520. The recommendations 555 can be generated dynamically in response to the generation of graph 245 and/or the regeneration of graph 245. In this way, if new query inputs are provided to any of the search input 505, the visualization input 510, the rendering algorithm input 515, and/or the date criteria input 520 in the GUI 230, the recommendation engine 365 can dynamically generate the recommendations 555. In some embodiments, the recommendations 555 can be provided to a user via a knowledge agent or an interactive agent, such as a chatbot program that can be configured to receive the recommendations 555 and provide them to a user in response to the user's query input 240 that was provided via the chatbot program. Additionally, or alternatively, the recommendation engine 365 can dynamically generate the recommendations based on a user manipulating the graph 245, for example, based on a user zooming in or zooming out of a portion of the graph 245. In some embodiments, the recommendation engine 365 can dynamically generate the recommendations based on repositioning the graph 245 within the display panel 525 to show a different view of one or more portions of the graph 245.
As shown in
The recommendations 555 can include an ordered list of recommendations as shown in
As shown in
The node data panel 560 illustrated in
As further shown in
As shown in
Based on the query input shown in
In some embodiments, the search input 505 can include auto-completion mechanisms. For example, as shown in the search input 505, after entering the input term “Optimize”, the semantic knowledge calculator 220 can cause the GUI 230 to display semantically or contextually related node and edge data which has been determined as being most associated with the initial search term of “Optimize”. The GUI 230 can display the additional node and edge selections to the user in the search input 505 for selection, for example using a tab key to complete the selection for one or more of the nodes and/or edges. The improved training system 200 user interface shown in GUI 230, and specifically the auto-completion mechanisms configured in the search input 505, enable a user to efficiently explore and select domain-specific entities or their relationships in order to receive training or gain additional knowledge in a desired context.
In
As further shown in
In
As further shown in
Exemplary technical effects of the methods, systems, and devices described herein include, by way of non-limiting example, generating training materials and recommendations based on semantic knowledge capture and processing of event data that is generated by domain-specific entities without requiring storing of all of the initially generated event data. By generating a graph data structure based on only newly received event data, less memory and fewer computing resources can be used to generate the recommendations. Thus the system represents an improvement of computer functionality that processes and displays graph data and recommendations that represent a limited set of data. In this way, the improved training system 200 can provide faster, more accurate training experiences in a dynamic graphical user interface capable of automatically regenerating the graph and recommendations without requiring additional input other than the query input. Additionally, the improved GUI provides more efficient execution of recommendations by error-proof mechanisms when selecting a recommendation to apply to a domain-specific entity, such as the recommendation application input 570. Existing training systems typically include static presentations of the training materials and lack the ability to dynamically receive, process, and generate updated training materials for display in a navigable display that affords context-sensitive updating and regeneration of the displayed content based on the query inputs provided by a user. The improved training system provides a more intuitive display of the training materials and allows for a deeper understanding of the recommendations and graph contents.
Certain exemplary embodiments have been described to provide an overall understanding of the principles of the structure, function, manufacture, and use of the systems, devices, and methods disclosed herein. One or more examples of these embodiments have been illustrated in the accompanying drawings. Those skilled in the art will understand that the systems, devices, and methods specifically described herein and illustrated in the accompanying drawings are non-limiting exemplary embodiments and that the scope of the present invention is defined solely by the claims. The features illustrated or described in connection with one exemplary embodiment may be combined with the features of other embodiments. Such modifications and variations are intended to be included within the scope of the present invention. Further, in the present disclosure, like-named components of the embodiments generally have similar features, and thus within a particular embodiment each feature of each like-named component is not necessarily fully elaborated upon.
The subject matter described herein can be implemented in analog electronic circuitry, digital electronic circuitry, and/or in computer software, firmware, or hardware, including the structural means disclosed in this specification and structural equivalents thereof, or in combinations of them. The subject matter described herein can be implemented as one or more computer program products, such as one or more computer programs tangibly embodied in an information carrier (e.g., in a machine-readable storage device), or embodied in a propagated signal, for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers). A computer program (also known as a program, software, software application, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored in a portion of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification, including the method steps of the subject matter described herein, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the subject matter described herein by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the subject matter described herein can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processor of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks, (e.g., internal hard disks or removable disks); magneto-optical disks; and optical disks (e.g., CD and DVD disks). The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, the subject matter described herein can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, (e.g., a mouse or a trackball), by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input.
The techniques described herein can be implemented using one or more modules. As used herein, the term “module” refers to computing software, firmware, hardware, and/or various combinations thereof. At a minimum, however, modules are not to be interpreted as software that is not implemented on hardware, firmware, or recorded on a non-transitory processor readable recordable storage medium (i.e., modules are not software per se). Indeed “module” is to be interpreted to always include at least some physical, non-transitory hardware such as a part of a processor or computer. Two different modules can share the same physical hardware (e.g., two different modules can use the same processor and network interface). The modules described herein can be combined, integrated, separated, and/or duplicated to support various applications. Also, a function described herein as being performed at a particular module can be performed at one or more other modules and/or by one or more other devices instead of or in addition to the function performed at the particular module. Further, the modules can be implemented across multiple devices and/or other components local or remote to one another. Additionally, the modules can be moved from one device and added to another device, and/or can be included in both devices.
The subject matter described herein can be implemented in a computing system that includes a back-end component (e.g., a data server), a middleware component (e.g., an application server), or a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, and front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
Approximating language, as used herein throughout the specification and claims, may be applied to modify any quantitative representation that could permissibly vary without resulting in a change in the basic function to which it is related. Accordingly, a value modified by a term or terms, such as “about,” “approximately,” and “substantially,” are not to be limited to the precise value specified. In at least some instances, the approximating language may correspond to the precision of an instrument for measuring the value. Here and throughout the specification and claims, range limitations may be combined and/or interchanged, such ranges are identified and include all the sub-ranges contained therein unless context or language indicates otherwise.
One skilled in the art will appreciate further features and advantages of the invention based on the above-described embodiments. Accordingly, the present application is not to be limited by what has been particularly shown and described, except as indicated by the appended claims. All publications and references cited herein are expressly incorporated by reference in their entirety.
The present application claims priority to U.S. Provisional Application No. 62/576,645 entitled “Framework For Providing Recommendations Based on Semantic Knowledge Capture,” filed on Oct. 24, 2017, which is hereby expressly incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62576645 | Oct 2017 | US |