supplemental functionalities may be provided for an executable program. In some embodiments, a computer program (e.g., an executable program or other computer program) associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications. Based on the ontology, supplemental information may be generated for the computer program. The supplemental information may be related to one or more functionalities of an application (of the set of applications) to be added to the executable program. The supplemental information may be provided as input to the computer program. The supplemental information may cause the one or more functionalities of the application to be made available via the executable program.
|
11. A system for providing supplemental functionalities for an executable program, the system comprising:
a computer system comprising one or more processors programmed with computer program instructions that, when executed, cause the computer system to:
cause an executable program associated with an ontology to be run, wherein the ontology comprises information indicating attributes for a set of applications;
obtain a domain-specific ontology on which the ontology has no dependency, wherein the domain-specific ontology is within a domain of interest;
obtain an ontology instance of the ontology based on the domain-specific ontology, the ontology instance corresponding to an application of the set of applications that is within the domain of interest;
use the ontology instance to generate supplemental information for the executable program, wherein the supplemental information defines one or more functionalities of an application that is within the domain of interest to be added to the executable program;
provide the supplemental information as input to the executable program's working memory at runtime of the executable program; and
manipulate the supplemental information in the working memory at runtime based on a set of runtime rules,
wherein the providing of the supplemental information causes the one or more functionalities of the application be made available via the executable program.
1. A method of providing supplemental functionalities to an executable program, the method being implemented by a computer system comprising one or more processors executing one or more computer program instructions that, when executed, perform the method, the method comprising:
causing an executable program associated with an ontology to be run, wherein the ontology comprises information indicating attributes for a set of applications;
obtaining a domain-specific ontology on which the ontology has no dependency, wherein the domain-specific ontology is within a domain of interest;
obtaining an ontology instance of the ontology based on the domain-specific ontology, the ontology instance corresponding to an application of the set of applications that is within the domain of interest;
using the ontology instance to generate supplemental information for the executable program, wherein the supplemental information defines one or more functionalities of the application that is within the domain of interest to be added to the executable program;
providing the supplemental information as input to the executable program's working memory at runtime of the executable program; and
manipulating the supplemental information in the working memory at runtime based on a set of runtime rules,
wherein the providing of the supplemental information causes the one or more functionalities of the application to be made available via the executable program.
19. A method of providing supplemental functionalities to an executable program, the method being implemented by a computer system comprising one or more processors executing one or more computer program instructions that, when executed, perform the method, the method comprising:
causing an executable program associated with an ontology to be run, wherein the ontology comprises information indicating attributes for a set of applications;
obtaining a domain-specific ontology on which the ontology has no dependency, wherein the domain-specific ontology is within a domain of interest;
using the ontology and the domain-specific ontology to generate supplemental information for the executable program, wherein the supplemental information defines one or more functionalities of an application of the set of applications that is within the domain of interest to be added to the executable program;
providing the supplemental information as input to the executable program's working memory at runtime of the executable program; and
manipulating the supplemental information in the working memory at runtime based on a set of runtime rules, wherein the providing of the supplemental information causes the one or more functionalities of the application be made available via the executable program at the runtime of the executable program without recompiling the executable program, and wherein the executable program obtains the supplemental information from the executable program's working memory at the runtime of the executable program to perform the one or more functionalities of the application.
2. The method of
using the ontology instance to generate other supplemental information for the executable program, wherein the other supplemental information defines one or more functionalities of another application of the set of applications that is within the domain of interest; and
providing the other supplemental information as input to the executable program, wherein the providing of the other supplemental information causes the one or more functionalities of the other application be made available via the executable program.
3. The method of
4. The method of
5. The method of
assigning a freeze to the ontology and the domain-specific ontology that disables further modification to the ontology and the domain-specific ontology.
6. The method of
extracting class information from the ontology; and
using the class information to generate a programming interface, wherein the programming interface allows the executable program to access the supplemental information.
7. The method of
extracting axiom information from the ontology; and
using the axiom information of the ontology to generate a set of logic rules, wherein at least part of the supplemental information is generated using the set of logic rules.
8. The method of
extracting axiom information from the domain-specific ontology; and
using the axiom information of the domain-specific ontology to generate a set of specific logic rules.
9. The method of
augmenting the set of logic rules and the set of specific logic rules with the set of runtime rules to enable the one or more functionalities of the application to be available via the executable program.
10. The method of
12. The system of
use the ontology instance to generate other supplemental information for the executable program, wherein the other supplemental information defines one or more functionalities of another application of the set of applications that is within the domain of interest; and
provide the other supplemental information as input to the executable program, wherein the providing of the other supplemental information causes the other one or more functionalities of the other application be made available via the executable program.
13. The system of
14. The system of
15. The system of
16. The system of
extract class information from the ontology; and
use the class information to generate a programming interface, wherein the programming interface allows the executable program to access the supplemental information.
17. The system of
extract axiom information from the ontology; and
use the axiom information of the ontology to generate a set of logic rules, wherein at least part of the supplemental information is generated using the set of logic rules.
18. The system of
extract axiom information from the domain-specific ontology; and
use the axiom information of the domain-specific ontology to generate a set of specific logic rules.
20. The method of
using the ontology and the domain-specific ontology to generate other supplemental information for the executable program, wherein the other supplemental information defines one or more functionalities of another application of the set of applications that is within the domain of interest; and
providing the other supplemental information as input to the executable program's working memory at the runtime of the executable program, wherein the providing of the other supplement information causes the one or more functionalities of the other application be made available via the executable program at the runtime of the executable program without recompiling the executable program.
|
This application is a continuation of U.S. patent application Ser. No. 15/424,768, filed on Feb. 3, 2017, which is a continuation of U.S. patent application Ser. No. 15/141,814, filed on Apr. 28, 2016, which is a continuation of U.S. patent application Ser. No. 14/859,032, filed on Sep. 18, 2015, which is related to the following U.S. utility patent applications, filed on Sep. 18, 2015: (1) U.S. patent application Ser. No. 14/858,980 and (2) U.S. patent application Ser. No. 14/859,016, each of which is hereby incorporated by reference herein in its entirety.
The invention relates to providing ontology-configurable computer programs and, more particularly, to providing supplemental functionalities for computer programs.
Application software (also referred to as an application) is generally designed to perform one or more tasks, activities, or projects on behalf of users. For example, some business applications are used by business users to perform various business functions, like measuring productivity, tracking inventory, workflow management, and executing various back-office tasks. Business applications sharing the same or similar business functions may be considered as a class of business applications, such as business process management (BPM) applications and master data management (MDM) applications. The business applications in the same class may share data models, such as the same or similar business objects (e.g., classes, objects, and relationships). In addition to its business function, each particular business application may be built based on knowledge from one or more domains of interest, such as the human resource domain, healthcare domain, technology domain, etc. For example, a new employee on-boarding application may belong to the class of BPM applications and specialize in the human resource domain.
Traditionally, data models shared by the same class of business applications are expressed by custom software modules written, for instance, in a traditional object-oriented programming language reflecting the data model as business objects. Typically, to add domain-specific knowledge to a business application, programmers write application code embodying the domain-specific knowledge in the same programming language (as the source code of the business application), or the application code is generated automatically based on some information gathered from a business analyst or a domain expert. Regardless, these typical approaches generally require changes to the application code of the business application. As such, when new code is introduced in an application, a significant amount of time and effort is generally required to ensure the integrity of the resulting application, which brings significant barriers in terms of productivity, and can propagate errors throughout a code base in an unpredictable fashion. These and other drawbacks exist.
The invention addressing these and other drawbacks relates to methods, apparatuses, and/or systems for providing ontology-configurable computer programs and/or supplemental functionalities for computer programs. As an example, an application (and/or a computer program thereof) may be supplemented with additional functionalities, e.g., for specializing a business application in a particular domain of interest, without having to modify the application code of the application (and/or without having to recompile such application code to recreate an “updated” version of the executable). To achieve this, for example, a business application may utilize at runtime supplemental information as at least part of its working memory.
In accordance with some embodiments described herein, a method for providing supplemental functionalities for a computer program (e.g., an executable program or other computer program) may be provided. A computer program associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications. Examples of the attributes include, but are not limited to, classes, properties, and axioms. An instance of the ontology may be obtained, which corresponds to an application of the set of applications. Based on the ontology instance, supplemental information related to one or more functionalities of the application to be added to the computer program may be provided for the computer program. The supplemental information may be provided as input to the computer program. The supplemental information, at least in part, may cause the one or more functionalities of the application be made available via the executable program.
In some embodiments, the computer program may be a logic program for executing the functionalities of the application using the supplemental information. The computer program may be configurable to perform a set of tasks common to a class of business application in each of several different domains of interest. The executable program may obtain the supplemental information from working memory at runtime. The supplemental information may include metadata in a graph data structure, such as a Resource Description Framework (RDF) graph. The one or more functionalities may be made available via the executable program without recompiling the executable program.
In some embodiments, by obtaining a different instance of the ontology that corresponds to another application of the set of applications, different supplemental information related to different functionalities of the other application may be generated and provided to the computer program to enable to the different functionalities to be available via the computer program. For example, the computer program may be a business application that can be supplemented to “create” other business applications in the same class without, for example, having to modify the code of the business application or recompile an updated version of the business application.
In accordance with other aspects of the inventions, a method for providing supplemental functionalities for a computer program (e.g., an executable program or other computer program) via a domain-specific ontology and an instance of a general ontology may be provided. For example, a business application may be specialized using a domain-specific ontology by this method. A computer program may be caused to be run. A general ontology and a domain-specific ontology may be obtained. The domain-specific ontology may be associated with a domain of interest, and the general ontology can be used to interpret the domain-specific ontology or any other domain-specific ontology. An instance of the general ontology may be obtained. The general ontology instance may be based on the domain-specific ontology and correspond to an application associated with the domain of interest. Based on the general ontology instance, supplemental information related to one or more functionalities of the application to be added to the computer program may be generated for the computer program. The supplemental information may be provided as input to the computer program. The supplemental information, at least in part, may cause the one or more functionalities of the application be made available via the executable program.
In some embodiments, the computer program may be a logic program for executing the functionalities of the application using the supplemental information. The computer program may be configurable to perform a set of tasks common to a class of business application in each of several different domains of interest. The executable program may obtain the supplemental information from working memory at runtime. The supplemental information may include metadata in a graph data structure, such as an RDF graph. The one or more functionalities may be made available via the executable program without recompiling the executable program.
In some embodiments, by obtaining a different domain-specific ontology in another domain of interest and a different instance of the general ontology based on the different domain-specific ontology, different supplemental information related to different functionalities of another application may be generated and provided to the computer program to enable the different functionalities to be available via the computer program. For example, the computer program may be a business application that can be supplemented to “create” other business applications in different domains of interests without, for example, having to modify the code of the business application or recompile an updated version of the business application.
In accordance with still other aspects of the inventions, a method for providing supplemental functionalities for a computer program (e.g., an executable program or other computer program) via a domain-specific ontology and an instance of an ontology describing a class of applications may be provided. For example, a domain-specific business application that belongs to a class of business applications may be specialized by this method. A computer program associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications. Examples of the attributes include, but are not limited to, classes, properties, and axioms. A domain-specific ontology may be obtained. The domain-specific ontology may be associated with a domain of interest. An instance of the ontology may be obtained. The ontology instance may be based on the domain-specific ontology and correspond to an application of the set of applications that is associated with the domain of interest. Based on the ontology instance, supplemental information related to one or more functionalities of the application to be added to the computer program may be generated for the computer program. The supplemental information may be provided as input to the computer program. The supplemental information, at least in part, may cause the one or more functionalities of the application be made available via the executable program.
In some embodiments, the computer program may be a logic program for executing the functionalities of the application using the supplemental information. The computer program may be configurable to perform a set of tasks common to a class of business application in each of several different domains of interest. The executable program may obtain the supplemental information from working memory at runtime. The supplemental information may include metadata in a graph data structure, such as an RDF graph. The one or more functionalities may be made available via the executable program without recompiling the executable program.
In some embodiments, by obtaining a different instance of the ontology that is based on the domain-specific ontology and corresponds to another application of the set of applications in the domain of interest, different supplemental information related to different functionalities of the other application may be generated and provided to the computer program to enable the different functionalities to be available via the computer program. For example, the computer program may be a business application that can be supplemented to “create” other business applications in the same class without, for example, having to modify the code of the business application or recompile an updated version of the business application.
Various other aspects, features, and advantages of the inventions will be apparent through the detailed description of the invention and the drawings attached hereto. It is also to be understood that both the foregoing general description and the following detailed description are exemplary and not restrictive of the scope of the inventions. As used in the specification and in the claims, the singular forms of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise. In addition, as used in the specification and the claims, the term “or” means “and/or” unless the context clearly dictates otherwise.
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the embodiments of the invention. It will be appreciated, however, by those having skill in the art that the embodiments of the invention may be practiced without these specific details or with an equivalent arrangement. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the embodiments of the invention.
To mitigate the problems described herein, the inventors had to both invent solutions and, in some cases just as importantly, recognize problems overlooked (or not yet foreseen) by others in the field of enterprise software development. Indeed, the inventors wish to emphasize the difficulty of recognizing those problems that are nascent and will become much more apparent in the future should trends in industry continue as the inventors expect. Further, because multiple problems are addressed, it should be understood that some embodiments are problem-specific, and not all embodiments address every problem with traditional systems described herein or provide every benefit described herein. That said, improvements that solve various permutations of these problems are described below.
The complexity of software, particularly in business applications, has expanded dramatically in recent years. As a result, the cost of many types of custom software has risen. It is also believed that the responsiveness of developers to changing business needs has decreased. In part, this is caused by code added to address more complex use cases and extensive testing of new versions to understand complex interactions introduced by revisions to applications.
These issues, in some cases, are mitigated by some embodiments described below. Some embodiments may separately address two aspects of an application: (1) those aspects particular to a class of business applications; and (2) those aspects particular to a domain in which an instance of the class is to be applied. In some cases, relatively flexible executable code is generated for a class of business applications, and then functionality of that code is refined with an ontology that reflects more specific aspects of a particular domain. In some cases, the ontology can be created much more efficiently than the corresponding bespoke application can be created from scratch, as the ontology can facilitate code re-use across domains in some embodiments. And in some cases, the ontology can be modified with less risk to the larger code base, often without compiling new code.
It should be emphasized, though, that several inventions are described. These inventions are independently useful, so not all embodiments mitigate all of the problems addressed above, and some embodiments provide other benefits discussed below.
Description of Example Systems
In some embodiments, the computer system 102 in
The electronic storage 108 may comprise non-transitory storage media that electronically stores information. The electronic storage media of the electronic storage 108 may include one or both of system storage that is provided integrally (e.g., substantially non-removable) with the computer system 102 or removable storage that is removably connectable to the computer system 102 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). The electronic storage 108 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media. The electronic storage 108 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources). The electronic storage 108 may store software algorithms, information determined by the processors 106, information received from the computer system 102, information received from client computing platforms, or other information that enables the computer system 102 to function as described herein.
The processors 106 may be programmed to provide information processing capabilities in the computer system 102. As such, the processors 106 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. In some embodiments, the processors 106 may include a plurality of processing units. These processing units may be physically located within the same device, or the processors may represent processing functionality of a plurality of devices operating in coordination. The processors 106 may be programmed to execute computer program instructions to perform functions described herein of the subsystems 112 and 114, or other components. The processors 106 may be programmed to execute computer program instructions by software; hardware; firmware; some combination of software, hardware, or firmware; and/or other mechanisms for configuring processing capabilities on the processors 106.
A computer program on the computer system 102 may comprise an application runtime that can cause the computer system 102 to perform indicated tasks according to encoded instructions. The instructions may be any instructions (such as bytecode) for a software interpreter including, but not limited to, machine code instructions for the processors 106, scripting language source file, etc. In some cases, the instructions may be complied or interpreted instructions for which source code is not provided to the party developing ontologies. An executable (of the computer program) may be hand-coded in machine language directly or may be developed as source code in any high-level programming language or assembly language and then complied into either an executable machine code file or non-executable machine code object files. The executable program may further include a runtime system, which provides runtime language features and interactions with the runtime environment of the computer system 102. In one example, the runtime system of the executable program may be a logic program including a rule engine and a set of runtime rules that control the execution of the executable program. As an example, specialization of the executable program may be achieved by accessing supplemental information in a working memory at runtime without the need to modify the executable program (e.g., reprogramming the source code and/or recompiling the source code of the executable program). For example, functionalities of any particular application or a class of applications in a particular domain of interest may be enabled on the executable program using one or more ontologies as will be described in details below. In some embodiments, the executable program may be a logic program for executing functionalities of an application using the supplemental information.
The ontology management subsystem 112 may perform various functions with respect to different types of ontologies in different embodiments. An ontology may be a machine-processable artifact that defines and captures the relationships between concepts (classes) and objects (individuals of such classes) in some domain of interest. A logic-based ontology language allows ontologies to be specified as logical theories, meaning that it is possible to reason about the relationships between the concepts and objects that are expressed in such an ontology.
Referring now to
TABLE 1
Class of Applications
Domain of Interest
Business Process Management (BPM)
Healthcare
Enterprise Resource Planning (ERP)
Finance and Banking
Claim Adjudication
Human Resource
Content Management System (CMS)
Manufacturing
Workforce Management
Distribution and Logistics
Customer Relationship Management (CRM)
Government and Public Sector
Call Center Management
Defense Industry
Master Data Management (MDM)
Automotive
Enterprise Asset Management (EAM)
Engineering
Supply Chain Management (SCM)
Insurance
Accounting Management
Media
Revenue Cycle Management (RCM)
Real Estate
Order and Fulfillment Management
Retail
Operation Management
Technology
Help Desk Management
Telecommunication
Transportation & Travel
Education
It should be understood that multiple domains of interest (domain-specific verticals) may be applied to each class of applications. For example, each of the domains of interest listed in Table 1 that use computers may be applied to the Help Desk Management class of applications, and ERP software has applications in manufacturing, finance, banking, healthcare services, etc.
This axiom can be translated into plain language as: A MessageEndEvent is equivalent to EndEvent having a single EventDefinition of type MessageEventDefinition. Once the ontology is defined by the ontology defining component 202, it may be saved as a file in any suitable format, such as RDF/XML. RDF is a known data model for encoding metadata and knowledge on the Semantic Web using facts expressed as triples. For example, the definitions of the class MessageEndEvent may be described in the saved RDF/XML file as:
<owl:Class rdf:about=“&bpmn;MessageEndEvent”>
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType=“Collection”>
<rdf:Description rdf:about=“&bpmn;EndEvent”/>
<owl:Restriction>
<owl:onProperty rdf:resource=“&bpmn;hasEventDefinitions”/>
<owl:someValuesFrom rdf:resource=“&bpmn;MessageEventDefinition”/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf.resource=“&bpmn;hasEventDefinitions”/>
<owl:cardinality rdf:datatype=“&xsd;nonNegativeInteger”>1</owl:cardinality>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
<rdfs:subClassOf rdf:resource=“&bpmn;EndEvent”/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource=“&bpmn;topReactiveHelper”/>
<owl:hasValue>iMessageEndEvent</owl:hasValue>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
With respect to
The ontology management subsystem 112 in
The logic rule generation component 208 in
Turning back to
Referring to
In
It should be appreciated that the description of the functionality provided by the different subsystems 112 and 114 described herein is for illustrative purposes only, and is not intended to be limiting, as any of subsystems 112 and 114 may provide more or less functionality than is described. For example, additional subsystems may be programmed to perform some or all of the functionality attributed herein to one of subsystems 112 and 114.
The system 100 may further comprise a client device 104 (or multiple client devices 104). A client device 104 may comprise any type of mobile terminal, fixed terminal, or other device. By way of example, a client device 104 may comprise a desktop computer, a notebook computer, a netbook computer, a tablet computer, a smartphone, a navigation device, an electronic book device, a gaming device, or other user device. Users may, for instance, utilize one or more client devices 104 to interact with computer system 102 or other components of system 100. The users may include administrative users such as managers or programmers who manage the subsystems 112 and 114. The users may also include customers who use ontology-configurable programs and applications derived thereof.
Attention will now be turned to a more detailed description of various embodiments comprising one or more features related to providing ontology-configurable computer programs and/or supplemental functionalities for computer programs via ontology instances. It should be noted that features described herein may be implemented separately or in combination with one another.
Functionalities Provided Via a Class Ontology Instance
As shown in
object MessageEndEventCriteria {
def apply(m: Model) = new MessageEndEventCriteria(m, List( (m.owl.owlResource.rdfType,
m.rn.MessageEndEvent) ))
}
class MessageEndEventCriteria(m: Model, l: List[(topengine.api.rdf.Resource,
topengine.api.rdf.Resource)]) extends topengine.api.owl.Criteria(l) {
def addTopReactiveHelper(o: String) = new MessageEndEventCriteria(m,
(m.rn.topReactiveHelper, m.rdfSession.createLiteral(o)) :: criteria)
def addHasEventDefinitions(o: EventDefinition) = new MessageEndEventCriteria(m,
(m.rn.hasEventDefinitions, o.s) :: criteria)
def addIncomingSequenceFlows(o: SequenceFlow) = new MessageEndEventCriteria(m,
(m.rn.incomingSequenceFlows, o.s) :: criteria)
def addOutgoingSequenceFlow(o: SequenceFlow) = new MessageEndEventCriteria(m,
(m.rn.outgoingSequenceFlow, o.s) :: criteria)
}
object MessageEndEvent {
def apply(m: Model, s: topengine.api.rdf.Resource) = {
new MessageEndEventImpl(m, m.createInstanceOf(s, m.rn.MessageEndEvent))
}
def createInstance(m: Model) = new MessageEndEventImpl(m,
m.createInstanceOf(m.rn.MessageEndEvent))
def createNamedInstance(m: Model, name: String) = new MessageEndEventImpl(m,
m.createNamedInstanceOf(name, m.rn.MessageEndEvent))
def asMessageEndEvent(m: Model, s: topengine.api.rdf.Resource): Option[MessageEndEvent]
= {
if(m.isInstanceOf(s, m.rn.MessageEndEvent)) Some(MessageEndEvent(m, s))
else None
}
def find(m: Model): Iterable[MessageEndEvent] =
m.findCustomSubject(m.rn.MessageEndEvent, MessageEndEventCriteria(m), {r =>
MessageEndEvent.asMessageEndEvent(m.bpmn, r) match {
case Some(c) => c
case None => throw topengine.api.TopEngineException(“MessageEndEvent.find has
subject(s) that are not type MessageEndEvent”) }})
def find(m: Model, criteria: MessageEndEventCriteria): Iterable[MessageEndEvent] =
m.findCustomSubject(m.rn.MessageEndEvent, criteria, {r =>
MessageEndEvent.asMessageEndEvent(m.bpmn, r) match {
case Some(c) => c
case None => throw topengine.api.TopEngineException(“MessageEndEvent.find has
subject(s) that are not type MessageEndEvent”) }})
}
trait MessageEndEvent extends EndEvent {
val s: topengine.api.rdf.Resource
// Properties
}
class MessageEndEventImpl(m: Model, s: topengine.api.rdf.Resource) extends
topengine.api.owl.ThingImpl(m.owl, s) with MessageEndEvent {
// Base classes
def asEndEvent: EndEvent = EndEvent(m.bpmn, s)
def asEvent: Event = Event(m.bpmn, s)
def asFlowNode: FlowNode = FlowNode(m.bpmn, s)
def asFlowElement: FlowElement = FlowElement(m.bpmn, s)
def asThing: topengine.api.owl.Thing = topengine.api.owl.Thing(m.owl, s)
// Properties
// topReactiveHelper is a Datatype Functional Property, range is String
def topReactiveHelper: Option[String] = m.hasObjectAsLiteral(s, m.rn.topReactiveHelper)
map { _.getString }
def setTopReactiveHelper(o: String) = m.setFunctionalPropertyValue(s,
m.rn.topReactiveHelper, o)
// hasEventDefinitions is an Object Property
def hasEventDefinitions: Iterable[EventDefinition] = m.rdfSession.getCustomObjects(s,
m.rn.hasEventDefinitions, { r => EventDefinition.asEventDefinition(m.bpmn, r) match {
case Some(c) => c
case None => throw
topengine.api.TopEngineException(“MessageEndEvent.hasEventDefinitions has object(s) that
are not type EventDefinition”) }})
def addHasEventDefinitions(o: EventDefinition) = m.addPropertyValue(s,
m.rn.hasEventDefinitions, o.s)
def removeHasEventDefinitions(o: EventDefinition) = m.removePropertyValue(s,
m.rn.hasEventDefinitions, o.s)
def removeAllHasEventDefinitions = m.removePropertyValue(s, m.rn.hasEventDefinitions)
// incomingSequenceFlows is an Object Property
def incomingSequenceFlows: Iterable[SequenceFlow] = m.rdfSession.getCustomObjects(s,
m.rn.incomingSequenceFlows, { r => SequenceFlow.asSequenceFlow(m.bpmn, r) match {
case Some(c) => c
case None => throw
topengine.api.TopEngineException(“MessageEndEvent.incomingSequenceFlows has object(s)
that are not type SequenceFlow”) }})
def addIncomingSequenceFlows(o: SequenceFlow) = m.addPropertyValue(s,
m.rn.incomingSequenceFlows, o.s)
def removeIncomingSequenceFlows(o: SequenceFlow) = m.removePropertyValue(s,
m.rn.incomingSequenceFlows, o.s)
def removeAllIncomingSequenceFlows = m.removePropertyValue(s,
m.rn.incomingSequenceFlows)
// outgoingSequenceFlow is an Object Property
def outgoingSequenceFlow: Iterable[SequenceFlow] = m.rdfSession.getCustomObjects(s,
m.rn.outgoingSequenceFlow, { r => SequenceFlow.asSequenceFlow(m.bpmn, r) match {
case Some(c) => c
case None => throw
topengine.api.TopEngineException(“MessageEndEvent.outgoingSequenceFlow has object(s) that
are not type SequenceFlow”) }})
def addOutgoingSequenceFlow(o: SequenceFlow) = m.addPropertyValue(s,
m.rn.outgoingSequenceFlow, o.s)
def removeOutgoingSequenceFlow(o: SequenceFlow) = m.removePropertyValue(s,
m.rn.outgoingSequenceFlow, o.s)
def removeAllOutgoingSequenceFlow = m.removePropertyValue(s,
m.rn.outgoingSequenceFlow)
override def equals(o: Any) = o match {
case that: topengine.api.owl.ThingImpl => that.s.key == s.key
case _ => false
}
override def hashCode = s.key
}
The generated class provides a natural interface to executable programs written in Scala programming language for accessing supplemental information (e.g., metadata) stored in a working memory. The class MessageEndEventImpl is the generated implementation class that performs the access to the underlying supplemental information, for example, in RDF graph.
The generated classes in the programming language may capture the static data model embodied by the ontology. The axioms may be taken into consideration by logic rules that are applied to the supplemental information continuously as data is added to or subtracted from the supplemental information. The logic rules may be generated automatically from the BPM class ontology described in
# bpmn:MessageEndEvent is equivalent to the following conjunction:
[n=bpmn52, s=100]:
(?s rdf:type bpmn:EndEvent).
(?s bpmn:hasEventDefinitions ?o).(?o rdf:type
bpmn:MessageEventDefinition).
[?s test_cardinality bpmn_res:8]
−>
(?s rdf:type bpmn:MessageEndEvent)
Back to
<!-- http://owl.reactivecore.com/topreactive/sample/bpmn/acme-bpmn-
hr#iAcmeOnboardingProcess -->
<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iAcmeOnboardingProcess”>
<rdf:type rdf:resource=“&bpmn;Process”/>
<bpmn:hasFlowElement rdf:resource=“&acme-bpmn-hr;iAcmeStartOnboarding”/>
</owl:NamedIndividual>
<!-- http://owl.reactivecore.com/topreactive/sample/bpmn/acme-bpmn-
hr#iAcmeStartOnboarding -->
<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iAcmeStartOnboarding”>
<rdf:type rdf:resource=“&bpmn;StartEvent”/>
<bpmn:hasEventDefinitions rdf:resource=“&acme-bpmn-
hr;iStartOnboardingMessageDefinition”/>
</owl:NamedIndividual>
<!-- http://owl.reactivecore.com/topreactive/sample/bpmn/acme-bpmn-
hr#iFirstNameMappingElm -->
<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iFirstNameMappingElm”>
<rdf:type rdf:resource=“&bpmn;MappingElement”/>
<bpmn:sourceFieldName>GivenName</bpmn:sourceFieldName>
<bpmn:targetFieldName>hr:firstName</bpmn:targetFieldName>
<bpmn:targetFieldType>xsd:string</bpmn:targetFieldType>
<bpmn:sourceFieldType>xsd:string</bpmn:sourceFieldType>
</owl:NamedIndividual>
<!-- http://owl.reactivecore.com/topreactive/sample/bpmn/acme-bpmn-
hr#iLastNameMappingElm -->
<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iLastNameMappingElm”>
<rdf:type rdf:resource=“&bpmn;MappingElement”/>
<bpmn:targetFieldType>xsd:string</bpmn:targetFieldType>
<bpmn:targetFieldName>hr:lastName</bpmn:targetFieldName>
<bpmn:sourceFieldName>FamilyName</bpmn:sourceFieldName>
<bpmn:sourceFieldType>xsd:string</bpmn:sourceFieldType>
</owl:NamedIndividual>
<!-- http://owl.reactivecore.com/topreactive/sample/bpmn/acme-bpmn-
hr#iStartOnboardingMessageDefinition -->
<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iStartOnboardingMessageDefinition”>
<rdf:type rdf:resource=“&bpmn;MessageEventDefinition”/>
<bpmn:hasEventDefinitions rdf:resource=“&acme-bpmn-hr;iFirstNameMappingElm”/>
<bpmn:hasEventDefinitions rdf:resource=“&acme-bpmn-hr;iLastNameMappingElm”/>
</owl:NamedIndividual>
In
Following the BPM class ontology example described in
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, bpmn:Process)
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iAcmeOnboardingProcess, bpmn:hasFlowElement,
acme-bpmn-
hr:iAcmeStartOnboarding)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:StartEvent)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:hasEventDefinitions,
acme-bpmn-
hr:iStartOnboardingMessageDefinition)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,
bpmn:MessageEventDefinition)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr:iStartOnboardingMessageDefinition,
bpmn:hasEventDefinitions, acme-bpmn-
hr:iFirstNameMappingElm)
(acme-bpmn-hr:iStartOnboardingMessageDefinition,
bpmn:hasEventDefinitions, acme-bpmn-
hr:iLastNameMappingElm)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, bpmn:MappingElement)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldName,
“GivenName”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldName,
“hr:firstName”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldType,
“xsd:string”)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type, bpmn:MappingElement)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:sourceFieldName,
“FamilyName”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:targetFieldName,
“hr:lastName”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:targetFieldType,
“xsd:string”)
At runtime, the executable program 409 may be using the BPM definition above along with the corresponding generated logic rules to have a complete definition of the metadata defining the employee on-boarding application.
In order to increase the runtime performance of the executable program 409 with the supplemental functionalities, it is possible to augment the ontology instance 406 with entailments computed by the logic rules generated based on the class ontology 402 to have more comprehensive supplemental information. As an example, the employee on-boarding process may be augmented with entailments of the BPM class ontology using the generated logic rules to obtain the following supplemental information:
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, owl:Thing)
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type,
bpmn:FlowElementContainer)
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, bpmn:Process)
(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iAcmeOnboardingProcess, bpmn:hasFlowElement,
acme-bpmn-
hr:iAcmeStartOnboarding)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, owl:Thing)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:Event)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:FlowElement)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:FlowNode)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type,
bpmn:MessageStartEvent)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:StartEvent)
(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:hasEventDefinitions,
acme-bpmn-
hr:iStartOnboardingMessageDefinition)
(acme-bpmn-hr:iAcmeStartOnboarding,
bpmn:hasMessageEventDefinitions, acme-bpmn-
hr:iStartOnboardingMessageDefinition)
(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:topReactiveHelper,
“iMessageStartEvent”)
(acme-bpmn-hr:iAcmeStartOnboarding, top:consistent—on,
bpmn:hasEventDefinitions)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type, owl:Thing)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,
bpmn:EventDefinition)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,
bpmn:MessageEventDefinition)
(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr:iStartOnboardingMessageDefinition,
bpmn:hasEventDefinitions, acme-
bpmn-hr:iFirstNameMappingElm)
(acme-bpmn-hr:iStartOnboardingMessageDefinition,
bpmn:hasEventDefinitions, acme-
bpmn-hr:iLastNameMappingElm)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:Thing)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type,
bpmn:SupportingElement)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, bpmn:MappingElement)
(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldName,
“GivenName”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldName,
“hr:firstName”)
(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldType,
“xsd:string”)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type, owl:Thing)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type,
bpmn:SupportingElement)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type, bpmn:MappingElement)
(acme-bpmn-hr:iLastNameMappingElm, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:sourceFieldName,
“FamilyName”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:targetFieldName,
“hr:lastName”)
(acme-bpmn-hr:iLastNameMappingElm, bpmn:targetFieldType,
“xsd:string”)
It is noted that the triples in bold are the inferred entailments (metadata), while the rest of the triples are metadata transformed from the BPM ontology instance.
The supplemental information with augmented metadata contains additional information. For example, the named individual acme-bpmn-hr:iAcmeStartOnboarding is not only a bpmn:StartEvent as the asserted facts indicated, but also of type bpmn:MessageStartEvent as a consequence of the equivalent class definition present in the ontology. This supplemental information corresponding to the employee on-boarding application functionalities may be stored in the working memory and become the metadata information used by the executable program 409 at runtime. As a result, in some embodiments, the generated logic rules may no longer be needed by the executable program 409 once the metadata information is augmented with the inferred entailments. It may be needed when a new application is defined using a new instance of the BPM class ontology.
In an operation 502, a computer program associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications (e.g., a class of BPM application). Operation 502 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
In an operation 504, an instance of the ontology may be obtained. The ontology instance may correspond to an application of the set of applications. Operation 504 may be performed by an ontology management subsystem that is the same as or similar to the ontology management subsystem 112, in accordance with one or more embodiments.
In an operation 506, supplemental information for the computer program may be generated based on the ontology instance. The supplemental information may be related to functionalities of the application. Operation 506 may be performed by a supplemental information generation subsystem that is the same as or similar to the supplemental information generation subsystem 114, in accordance with one or more embodiments.
In an operation 508, the supplemental information may be provided as input to the computer program to enable the functionalities of the application to be available via the computer program. Operation 508 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
It should be understood that in some embodiments, operations 504-508 may be repeated to enable different functionalities of another application in the set of applications to be available via the computer program. For example, another ontology instance corresponding to the other application may be obtained, and another supplemental information related to the different functionalities may be generated based on the other ontology instance and provided as input to the computer program.
In an operation 602, an ontology associated with a class of applications may be obtained. Operation 602 may be performed by an ontology defining component that is the same as or similar to the ontology defining component 202, in accordance with one or more embodiments.
In an operation 604, a freeze may be assigned to the ontology that disables further modification of the ontology. In some embodiments, the freeze may be assigned once the ontology has been completed and validated to ensure the consistency of the ontology. Operation 604 may be performed by an ontology validation component that is the same as or similar to the ontology validation component 204, in accordance with one or more embodiments.
In an operation 606, class information may be extracted from the ontology. The class information may include, for example, class structures, data properties associated with each class, and the relationships between classes. Operation 606 may be performed by a programming interface generation component that is the same as or similar to the programming interface generation component 206, in accordance with one or more embodiments.
In an operation 608, a programming interface may be generated based on the class information. The programming interface may be in the form of computer code in a programming language and may be used by a computer program (e.g., the computer program of
In an operation 610, axiom information may be extracted from the ontology. Operation 610 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 612, logic rules may be generated based on the axiom information. The logic rules may be used to infer additional metadata, e.g., entailments on the objects of the ontology. Operation 612 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 614, logic rules may be augmented with runtime rules of the computer program. The augmented rules may be used for executing the computer program at runtime. Operation 614 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
Functionalities Provided via Domain-Specific and General Ontology Instances
In addition to a class ontology describing a class of application, a particular application often needs to access domain-specific information. The traditional approach to add domain-specific information to an application is to have programmers write application code embodying the domain-specific knowledge in some programming language, or to have the application code be generated automatically based on some information gathered from a business analyst or a domain expert.
As shown in
As mentioned above, both class information and axiom information may be extracted from the general ontology 702 and used to generate the programming interface and logic rules, respectively. Similarly, axiom information may be extracted from the domain-specific ontology 710 and used to generate the specific logic rules. The specific logic rules may be applied to an instance 708 of the general ontology 702 by the executable program 709. Following the human resource domain ontology example described in
# hr:hasRole some hr:BoardDirectorRole
[n=hr12, s=100]: (?s rdf:type hr:BoardDirector).(?s hr:hasRole ?o).(?o
rdf:type
hr:BoardDirectorRole) −> (?s top:consistent_on hr:hasRole)
[n=hr13, s=10]: (?s rdf:type hr:BoardDirector).not(?s top:consistent_on
hr:hasRole) −> (?s
rdf:type owl:Nothing)
The first rule indicates that a BoardDirector with a role of BoardDirectorRole is a consistent individual with regard to the property hasRole. The second rule indicates the complement of the first rule, meaning that a BoardDirector that does not have a consistent relationship on the property hasRole is an inconsistent individual (indicated as a member of Nothing).
Referring back to
Following the domain meta model ontology example in
(i_hr:BoardDirector, rdf:type, domain:ClassMetadata)
(i_hr:BoardDirector, domain:className, “hr:BoardDirector”)
(i_hr:BoardDirector, domain:directSubClassOf, i_hr:Person)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:firstName)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:hasRole)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:lastName)
(i_hr:BoardDirector-hr:hasRole, rdf:type, domain:PropertyMetadata)
(i_hr:BoardDirector-hr:hasRole, domain:propertyName, “hr:hasRole”)
(i_hr:BoardDirector-hr:hasRole, domain:range, “hr:Role”)
(i_hr:BoardDirector-hr:hasRole, domain:hasSomeValueFromRestriction,
“hr:BoardDirectorRole”)
(i_hr:BoardDirector-hr:hasRole, domain:isFunctionalProperty, “0”)
(i_hr:BoardDirector-hr:hasRole, domain:isObjectProperty, “1”)
In the extract above, the class hr:BoardDirector is described using an instance of domain:ClassMetadata named i_hr:BoardDirector. The property hr:hasRole is described using an instance of domain:PropertyMetadata and the restriction that a BoardDirector must have a role with value from the class hr:BoardDirectorRole has been captured.
The metadata describing the human resource domain ontology may be augmented with entailments from the domain meta model ontology (inferred metadata). This augments the metadata information with the inferred class structure. Using the human resource domain ontology as input, the augmented metadata information obtained after applying the logic rules generated based on the domain meta model ontology is:
i—hr:BoardDirector, rdf:type, owl:Thing)
(i—hr:BoardDirector, rdf:type, domain:DomainMetaModel)
(i_hr:BoardDirector, rdf:type, domain:ClassMetadata)
(i_hr:BoardDirector, domain:className, “hr:BoardDirector”)
(i_hr:BoardDirector, domain:directSubClassOf, i_hr:Person)
(i—hr:BoardDirector, domain:subClassOf, i—owl:Thing)
(i—hr:BoardDirector, domain:subClassOf, i—hr:ResourceManagement)
(i—hr:BoardDirector, domain:subClassOf, i—hr:Person)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:firstName)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:hasRole)
(i_hr:BoardDirector, domain:allProperties,
i_hr:BoardDirector-hr:lastName)
(i—hr:BoardDirector-hr:hasRole, rdf:type, owl:Thing)
(i—hr:BoardDirector-hr:hasRole, rdf:type, domain:DomainMetaModel)
(i_hr:BoardDirector-hr:hasRole, rdf:type, domain:PropertyMetadata)
(i_hr:BoardDirector-hr:hasRole, domain:propertyName, “hr:hasRole”)
(i_hr:BoardDirector-hr:hasRole, domain:range, “hr:Role”)
(i_hr:BoardDirector-hr:hasRole, domain:hasSomeValueFromRestriction,
“hr:BoardDirectorRole”)
(i_hr:BoardDirector-hr:hasRole, domain:isFunctionalProperty, “0”)
(i_hr:BoardDirector-hr:hasRole, domain:isObjectProperty, “1”)
The inferred entailments (additional supplemental information) are indicated in bold above.
In some embodiments, the expressibility of the executable program may be augmented by integrating the general ontology into a class ontology describing a class of applications. The expressibility of the resulting executable program can be increased by integrating the general ontology (e.g., a domain meta model ontology) with the class ontology. This integration may be done by importing the general ontology into the class ontology in order to specify domain-specific dependency.
As an example, it may be desired to inform the mapping algorithm of axioms present in the target elements, e.g., if the property is a functional property or the ability to ensure the validity of the type is used in the range of the target element. Specifically, consider the equivalent specification of the above-mentioned example of an employee on-boarding process using the instance of the domain metal model ontology as metadata describing the human resource domain ontology example:
#
# Metadata describing Acme Employee On-Boarding Process
#
(acme-bpmn-hr2:iAcmeOnboardingProcess, rdf:type, bpmn2:Process)
(acme-bpmn-hr2:iAcmeOnboardingProcess, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iAcmeOnboardingProcess,
bpmn2:hasFlowElement, acme-bpmn-
hr2:iOnboardingStartEvent)
(acme-bpmn-hr2:iOnboardingStartEvent, rdf:type, bpmn2:StartEvent)
(acme-bpmn-hr2:iOnboardingStartEvent, rdf:type, owl:NamedIndividual)
(acme-bpmn-hr2:iOnboardingStartEvent, bpmn2:hasEventDefinitions,
acme-bpmn-
hr2:iOnboardingStartEventDefinition)
(acme-bpmn-hr2:iOnboardingStartEventDefinition, rdf:type,
bpmn2:MessageEventDefinition)
(acme-bpmn-hr2:iOnboardingStartEventDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iOnboardingStartEventDefinition,
bpmn2:hasMappingElements, acme-
bpmn-hr2:iOnboardingEmployeeMappingElement)
(acme-bpmn-hr2:iOnboardingEmployeeMappingElement, rdf:type,
bpmn2:MappingElement)
(acme-bpmn-hr2:iOnboardingEmployeeMappingElement, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iOnboardingEmployeeMappingElement,
bpmn2:hasDomainEntityMappingDefinition,
acme-bpmn-hr2:iEmployeeMappingDefinition)
(acme-bpmn-hr2:iEmployeeMappingDefinition, rdf:type,
domain:DomainEntityMappingDefinition)
(acme-bpmn-hr2:iEmployeeMappingDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iEmployeeMappingDefinition,
domain:entityClassMetadata,
i—hr:Employee)
(acme-bpmn-hr2:iEmployeeMappingDefinition,
domain:hasDomainPropertyMappingDefinitions, acme-bpmn-
hr2:iFirstNameMappingDefinition)
(acme-bpmn-hr2:iEmployeeMappingDefinition,
domain:hasDomainPropertyMappingDefinitions, acme-bpmn-
hr2:iLastNameMappingDefinition)
(acme-bpmn-hr2:iFirstNameMappingDefinition, rdf:type,
domain:DomainPropertyMappingDefinition)
(acme-bpmn-hr2:iFirstNameMappingDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iFirstNameMappingDefinition, domain:sourceFieldName,
“GivenName”)
(acme-bpmn-hr2:iFirstNameMappingDefinition, domain:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr2:iFirstNameMappingDefinition,
domain:targetPropertyMetadata,
i—hr:Employee-firstName)
(acme-bpmn-hr2:iLastNameMappingDefinition, rdf:type,
domain:DomainPropertyMappingDefinition)
(acme-bpmn-hr2:iLastNameMappingDefinition, rdf:type,
owl:NamedIndividual)
(acme-bpmn-hr2:iLastNameMappingDefinition, domain:sourceFieldName,
“FamilyName”)
(acme-bpmn-hr2:iLastNameMappingDefinition, domain:sourceFieldType,
“xsd:string”)
(acme-bpmn-hr2:iLastNameMappingDefinition,
domain:targetPropertyMetadata,
i—hr:Employee-lastName)
#
# Metadata describing HR sample Domain Ontology
#
(i—hr:Employee, rdf:type, domain:ClassMetadata)
(i_hr:Employee, rdf:type, owl:NamedIndividual)
(i_hr:Employee, domain:className, “hr:Employee”)
(i_hr:Employee, domain:directProperties, i_hr:Employee-firstName)
(i_hr:Employee, domain:directProperties, i_hr:Employee-lastName)
(i—hr:Employee-firstName, rdf:type, domain:PropertyMetadata)
(i_hr:Employee-firstName, rdf:type, owl:NamedIndividual)
(i_hr:Employee-firstName, domain:propertyName, “hr:firstName”)
(i_hr:Employee-firstName, domain:range, “xsd:string”)
(i_hr:Employee-firstName, domain:isFunctionalProperty, “1”)
(i_hr:Employee-firstName, domain:isObjectProperty, “0”)
(i—hr:Employee-lastName, rdf:type, domain:PropertyMetadata)
(i_hr:Employee-lastName, rdf:type, owl:NamedIndividual)
(i_hr:Employee-lastName, domain:propertyName, “hr:lastName”)
(i_hr:Employee-lastName, domain:range, “xsd:string”)
(i_hr:Employee-lastName, domain:isFunctionalProperty, “1”)
(i_hr:Employee-lastName, domain:isObjectProperty, “0”)
In the domain:DomainEntityMappingDefinition the Domain Entity is specified as an instance of domain:ClassMetadata (range of property domain:entityClassMetadata is of type domain:ClassMetadata; see highlights above in bold). Also, the Domain Property Mapping Definition (instances of domain:DomainPropertyMappingDefinition) has an instance of domain:PropertyMetadata for range of domain:targetPropertyMetadata (see highlights above in bold). This provides a rich metadata description of the target domain-specific entities with full access to axioms and restrictions providing the ability of the executable program to enforce or validate them at runtime.
In an operation 802, a computer program may be caused to be run. Operation 802 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
In an operation 804, a general ontology and a domain-specific ontology may be obtained. The domain-specific ontology may be associated with a domain of interest, and the general ontology can be used to interpret the domain-specific ontology. Operation 804 may be performed by an ontology management subsystem that is the same as or similar to the ontology management subsystem 112, in accordance with one or more embodiments.
In an operation 806, an instance of the general ontology may be obtained. The general ontology instance may be based on the domain-specific ontology and correspond to an application associated with the domain of interest. Operation 806 may be performed by an ontology management subsystem that is the same as or similar to the ontology management subsystem 112, in accordance with one or more embodiments.
In an operation 808, supplemental information for the computer program may be generated based on the general ontology instance. The supplemental information may be related to functionalities of the application. Operation 808 may be performed by a supplemental information generation subsystem that is the same as or similar to the supplemental information generation subsystem 114, in accordance with one or more embodiments.
In an operation 810, the supplemental information may be provided as input to the computer program to enable the functionalities of the application to be available via the computer program. Operation 810 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
It should be understood that, in some embodiments, operations 804-810 may be repeated to enable different functionalities of another application in a different domain of interest to be available via the computer program. For example, another domain-specific ontology in the different domain of interest and another general ontology instance corresponding to the other application may be obtained, and another supplemental information related to the different functionalities may be generated based on the other general ontology instance and domain-specific ontology and provided as input to the computer program.
In an operation 902, a general ontology and a domain-specific ontology may be obtained. Operation 902 may be performed by an ontology defining component that is the same as or similar to the ontology defining component 202, in accordance with one or more embodiments.
In an operation 904, a freeze may be assigned to the general ontology and domain-specific ontology that disables further modification of the ontologies. In some embodiments, the freeze may be assigned once an ontology has been completed and validated to ensure the consistency of the ontology. Operation 904 may be performed by an ontology validation component that is the same as or similar to the ontology validation component 204, in accordance with one or more embodiments.
In an operation 906, class information may be extracted from the general ontology. The class information may include, for example, class structures, data properties associated with each class, and the relationships between classes. Operation 906 may be performed by a programming interface generation component that is the same as or similar to the programming interface generation component 206, in accordance with one or more embodiments.
In an operation 908, a programming interface may be generated based on the class information of the general ontology. The programming interface may be in the form of computer code in a programming language and may be used by a computer program (e.g., the computer program of
In an operation 910, axiom information may be extracted from the general ontology. Operation 910 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 912, general logic rules may be generated based on the axiom information of the general ontology. The general logic rules may be used to infer additional metadata, e.g., entailments on the objects of the domain-specific ontology. Operation 912 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 914, axiom information may be extracted from the domain-specific ontology. Operation 914 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 916, specific logic rules may be generated based on the axiom information of the domain-specific ontology. The specific logic rules may be applied to manipulate the supplemental information by the computer program. Operation 916 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 918, general and specific logic rules may be augmented with runtime rules of the computer program. The augmented rules may be used for executing the computer program at runtime. Operation 918 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
Functionalities Provided via Domain-Specific and Class Ontology Instances
One aspect of this invention by which one can generate a class of applications from a class ontology described in
As an example, an application for on-boarding new employees by the human resource department of an organization is an application that belongs to the class of BPM applications. This application is specialized with human resource domain knowledge. The specialization of the application is two-fold: 1) the new employee on-boarding business process is an application that belongs to the class of BPM applications, and 2) the inclusion of human resource domain-specific knowledge specializes the on-boarding process by using data elements or attributes that are specific to an organization or industry. Combining a class of applications associated with a class ontology with a domain-specific ontology may result in a semantically informed computer program (e.g., an executable program) that is a programmatic representation of the class of applications applied to the specific domain by the underlying ontologies.
As mentioned above, both class information and axiom information may be extracted from the class ontology 1002 and used to generate the programming interface and logic rules, respectively. Similarly, axiom information may be extracted from the domain-specific ontology 1014 and used to generate the specific logic rules. The specific logic rules may be applied to an instance 1010 of the class ontology 1002 by an executable program 1009. The class ontology instance 1010 may be based on the domain-specific ontology 1014 and correspond to an application 1012 of the class of applications 1004 that is associated with the domain of interest.
Supplemental information 1016 may be generated for the executable program 1009 based on the class ontology instance 1010. The supplemental information 1016 may be related to the functionalities 1018 of the application 1012. The supplemental information 1016 may be provided as input to the executable program 1009 at runtime so as to enable the application functionalities 1018 to be available via the executable program 1009. As indicated above with respect to
In an operation 1102, a computer program associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications (a class ontology for a class of applications). Operation 1102 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
In an operation 1104, a domain-specific ontology may be obtained. The domain-specific ontology may be associated with a domain of interest. Operation 1104 may be performed by an ontology management subsystem that is the same as or similar to the ontology management subsystem 112, in accordance with one or more embodiments.
In an operation 1106, an instance of the class ontology may be obtained. The class ontology instance may be based on the domain-specific ontology and correspond to an application of the set of applications that is associated with the domain of interest. Operation 1106 may be performed by an ontology management subsystem that is the same as or similar to the ontology management subsystem 112, in accordance with one or more embodiments.
In an operation 1108, supplemental information for the computer program may be generated based on the class ontology instance. The supplemental information may be related to functionalities of the application. Operation 1108 may be performed by a supplemental information generation subsystem that is the same as or similar to the supplemental information generation subsystem 114, in accordance with one or more embodiments.
In an operation 1110, the supplemental information may be provided as input to the computer program to enable the functionalities of the application to be available via the computer program. Operation 1110 may be performed by one or more processors that are the same as or similar to the processors 106, in accordance with one or more embodiments.
It should be understood that, in some embodiments, operations 1106-1110 may be repeated to enable different functionalities of another application in the set of applications to be available via the computer program. For example, another class ontology instance corresponding to the other application may be obtained, and other supplemental information related to the different functionalities may be generated based on the other class ontology instance and the domain-specific ontology and provided as input to the computer program.
In an operation 1202, a class ontology and a domain-specific ontology may be obtained. Operation 1202 may be performed by an ontology defining component that is the same as or similar to the ontology defining component 202, in accordance with one or more embodiments.
In an operation 1204, a freeze may be assigned to the class ontology and domain-specific ontology that disables further modification of the ontologies. In some embodiments, the freeze may be assigned once an ontology has been completed and validated to ensure the consistency of the ontology. Operation 1204 may be performed by an ontology validation component that is the same as or similar to the ontology validation component 204, in accordance with one or more embodiments.
In an operation 1206, class information may be extracted from the class ontology. The class information may include, for example, class structures, data properties associated with each class, and the relationships between classes. Operation 1206 may be performed by a programming interface generation component that is the same as or similar to the programming interface generation component 206, in accordance with one or more embodiments.
In an operation 1208, a programming interface may be generated based on the class information of the class ontology. The programming interface may be in the form of computer code in a programming language to be used by a computer program (e.g., the computer program of
In an operation 1210, axiom information may be extracted from the class ontology. Operation 1210 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 1212, logic rules may be generated based on the axiom information of the class ontology. The logic rules may be used to infer additional metadata, e.g., entailments on the objects of the domain-specific ontology. Operation 1212 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 1214, axiom information may be extracted from the domain-specific ontology. Operation 1214 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 1216, specific logic rules may be generated based on the axiom information of the domain-specific ontology. The specific logic rules may be applied to manipulate the supplemental information by the computer program. Operation 1216 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
In an operation 1218, logic rules and specific logic rules may be augmented with runtime rules of the computer program. The augmented rules may be used for executing the computer program at runtime. Operation 1218 may be performed by a logic rule generation component that is the same as or similar to the logic rule generation component 208, in accordance with one or more embodiments.
The methods described herein may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of the methods in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of the methods.
As used throughout this application, terms describing conditional relationships, e.g., “in response to X, Y,” “upon X, Y,” “if X, Y,” “when X, Y,” and the like, encompass causal relationships in which the antecedent is a necessary causal condition, the antecedent is a sufficient causal condition, or the antecedent is a contributory causal condition of the consequent, e.g., “state X occurs upon condition Y obtaining” is generic to “X occurs solely upon Y” and “X occurs upon Y and Z.” Such conditional relationships are not limited to consequences that instantly follow the antecedent obtaining, as some consequences may be delayed, and in conditional statements, antecedents are connected to their consequents, e.g., the antecedent is relevant to the likelihood of the consequent occurring. Statements in which a plurality of attributes or functions are mapped to a plurality of objects (e.g., one or more processors performing steps A, B, C, and D) encompasses both all such attributes or functions being mapped to all such objects and subsets of the attributes or functions being mapped to subsets of the attributes or functions (e.g., both all processors each performing steps A-D, and a case in which processor 1 performs step A, processor 2 performs step B and part of step C, and processor 3 performs part of step C and step D), unless otherwise indicated. Further, unless otherwise indicated, statements that one value or action is “based on” another condition or value encompass both instances in which the condition or value is the sole factor and instances in which the condition or value is one factor among a plurality of factors. Unless otherwise indicated, statements that “each” instance of some collection have some property should not be read to exclude cases where some otherwise identical or similar members of a larger collection do not have the property, i.e., each does not necessarily mean each and every.
Although the present invention has been described in detail for the purpose of illustration based on what are currently considered to be the most practical and preferred embodiments, it is to be understood that such detail is solely for that purpose and that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the scope of the appended claims. For example, it is to be understood that the present invention contemplates that, to the extent possible, one or more features of any embodiment can be combined with one or more features of any other embodiment.
Patent | Priority | Assignee | Title |
11663482, | Jul 06 2018 | GOOGLE LLC | User-specific text record-based format prediction |
Patent | Priority | Assignee | Title |
5694523, | May 31 1995 | Oracle International Corporation | Content processing system for discourse |
6101515, | May 31 1996 | Oracle International Corporation | Learning system for classification of terminology |
6102968, | May 21 1998 | THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT | Method for automatically closing open reactive systems |
6112201, | Aug 29 1995 | Oracle International Corporation | Virtual bookshelf |
6199195, | Jul 08 1999 | Leidos, Inc | Automatically generated objects within extensible object frameworks and links to enterprise resources |
6574655, | Jun 29 1999 | GRASS VALLEY US INC | Associative management of multimedia assets and associated resources using multi-domain agent-based communication between heterogeneous peers |
6675382, | Jun 14 1999 | Oracle America, Inc | Software packaging and distribution system |
6789252, | Apr 15 1999 | BLUE YONDER GROUP, INC | Building business objects and business software applications using dynamic object definitions of ingrediential objects |
7027974, | Oct 27 2000 | Leidos, Inc | Ontology-based parser for natural language processing |
7093200, | May 25 2001 | International Business Machines Corporation | Instance browser for ontology |
7096459, | Sep 11 2002 | International Business Machines Corporation | Methods and apparatus for root cause identification and problem determination in distributed systems |
7152228, | Jul 08 1999 | Leidos, Inc | Automatically generated objects within extensible object frameworks and links to enterprise resources |
7155715, | Mar 31 1999 | British Telecommunications public limited company | Distributed software system visualization |
7200563, | Aug 20 1999 | DST SYSTEMS, INC | Ontology-driven information system |
7337440, | Jan 07 1997 | Meta Platforms, Inc | Methodology for generating accessing functions for programmed execution of panel-driven business applications |
7373325, | Oct 13 2000 | RPX CLEARINGHOUSE LLC | Automated trading for e-markets |
7631301, | Dec 06 2001 | Microsoft Technology Licensing, LLC | Customizing binary content files |
7640532, | Aug 25 2004 | International Business Machines Corporation | Mapping software code to business logic |
7716286, | Dec 10 2003 | ZEROTOUCHDIGITAL, INC | Method and apparatus for utility computing in ad-hoc and configured peer-to-peer networks |
7730123, | Dec 20 2005 | AT&T Intellectual Property II, LP | Software application implemented using services from a services repository generated using a target services roadmap |
7747980, | Jun 08 2004 | KAHN, DAVID E | Method and system for specifying device interoperability source specifying renditions data and code for interoperable device team |
7756870, | Jun 25 2004 | SAP SE | Handling of standarized properties and their use in data exchange |
7770121, | Apr 12 2007 | Microsoft Technology Licensing, LLC | Host controlled user interface |
7784047, | Apr 15 2003 | Oracle International Corporation | Common management model for distributed server network |
7784838, | Jun 21 2007 | Petro Technologies, Inc. | High pressure energizable tube connector for a well |
7890517, | May 15 2001 | OBJECTSTORE, INC | Appliance for enterprise information integration and enterprise resource interoperability platform and methods |
7895568, | Jul 08 1999 | Leidos, Inc | Automatically generated objects within extensible object frameworks and links to enterprise resources |
7899764, | Feb 16 2007 | SIEMENS HEALTHINEERS AG | Medical ontologies for machine learning and decision support |
8001539, | Feb 28 2007 | Viavi Solutions Inc | Historical data management |
8028283, | Mar 20 2006 | Samsung Electronics Co., Ltd. | Method and system for automated invocation of device functionalities in a network |
8091081, | Mar 27 2001 | Siebel Systems, Inc. | Method, system, and product for upgrading software objects using inherency |
8112257, | Jul 31 2007 | SAP SE | Semantic extensions of business process modeling tools |
8127286, | Feb 16 2007 | Microsoft Technology Licensing, LLC | MSI enhancement to update RDP files |
8131838, | May 31 2006 | SAP SE | Modular monitor service for smart item monitoring |
8135655, | Oct 02 2008 | General Electric Capital Corporation | Dynamic intelligent objects |
8140680, | Jan 09 2008 | International Business Machines Corporation | Machine-processable semantic description for resource management |
8204870, | Aug 03 2007 | SYBASE, INC | Unwired enterprise platform |
8214372, | May 13 2009 | International Business Machines Corporation | Determining configuration parameter dependencies via analysis of configuration data from multi-tiered enterprise applications |
8217756, | Sep 01 2004 | Microsoft Technology Licensing, LLC | Rule-based filtering and alerting |
8255903, | Jul 05 2007 | Hewlett Packard Enterprise Development LP | Data processing system and method |
8291006, | May 30 2008 | International Business Machines Corporation | Method for generating a distributed stream processing application |
8370812, | Apr 02 2007 | International Business Machines Corporation | Method and system for automatically assembling processing graphs in information processing systems |
8370863, | May 21 2010 | Nokia Technologies Oy | Method and apparatus for integrating applications on demand to display and manipulate a semantic resource |
8402081, | Feb 25 2008 | VERITONE ALPHA, INC | Platform for data aggregation, communication, rule evaluation, and combinations thereof, using templated auto-generation |
8407677, | Aug 07 2006 | International Business Machines Corporation | Maintainable dynamic instrumentation technique for changing versions of software |
8418125, | May 03 2007 | International Business Machines Corporation | Incremental model refinement and transformation in generating commerce applications using a model driven architecture |
8423952, | Sep 29 2008 | Siemens Aktiengesellschaft | Method and an apparatus for automatic extraction of process goals |
8448164, | Aug 18 2008 | Software AG | SOA-registry, method and platform manager for automatic SOA application deployment |
8468244, | Jan 05 2007 | DIGITAL DOORS, INC | Digital information infrastructure and method for security designated data and with granular data stores |
8484283, | Aug 18 2006 | AKAMAI TECHNOLOGIES, INC | Method and system for mitigating automated agents operating across a distributed network |
8494894, | Sep 19 2008 | Strategyn Holdings, LLC | Universal customer based information and ontology platform for business information and innovation management |
8516435, | Jun 19 2008 | ServiceNow, Inc; International Business Machines Corporation | System and method for generating implementation artifacts for contextually-aware business applications |
8522195, | Sep 14 2007 | EIS SOFTWARE LTD | Systems and methods to generate a software framework based on semantic modeling and business rules |
8595138, | May 20 2003 | Oracle International Corporation | Packaging system for customizing software |
8620931, | Jun 24 2011 | SIEMENS HEALTHINEERS AG | Method of composing an ontology alignment |
8635232, | Sep 09 2005 | Salesforce.com, Inc. | Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment |
8650479, | Aug 05 2009 | GINEGAR LLC | Guided attachment of policies in a service registry environment |
8661107, | Oct 12 2010 | SAP SE | Business network meta model |
8666922, | Mar 18 2011 | Battelle Memorial Institute | Information processing systems, reasoning modules, and reasoning system design methods |
8667477, | Dec 30 2010 | SAP SE | Modifying software code |
8676833, | Jul 22 2005 | Onepatont Software Limited | Method and system for requesting social services from group of users |
8688749, | Mar 31 2011 | WELLS FARGO BANK, N A | Cross-ontology multi-master replication |
8712947, | Jan 27 2011 | International Business Machines Corporation | Collaborative system for capture and reuse of software application knowledge and a method of realizing same |
8713012, | Jul 02 2009 | International Business Machines Corporation | Modular authoring and visualization of rules using trees |
8732593, | Apr 05 2008 | SOCOCO, INC | Shared virtual area communication environment based apparatus and methods |
8739124, | Jun 27 2012 | SAP SE | Configuring integration capabilities for system integration |
8739150, | May 28 2010 | smartShift GmbH | Systems and methods for dynamically replacing code objects via conditional pattern templates |
8782597, | Mar 28 2011 | Kabushiki Kaisha Toshiba | Ontology updating apparatus, method and system |
8788566, | Nov 23 2007 | International Business Machines Corporation | Enforcing context model based service-oriented architecture policies and policy engine |
8832675, | Sep 26 2007 | AVAYA LLC | Dynamic user-interface generation and administration method and apparatus |
8849862, | May 21 2004 | RSVPRO, LLC | Architectural frameworks, functions and interfaces for relationship management (AFFIRM) |
8863102, | Apr 02 2007 | International Business Machines Corporation | Method and system for assembling information processing applications based on declarative semantic specifications |
8930178, | Jan 04 2007 | CHILDREN S HOSPITAL MEDICAL CENTER | Processing text with domain-specific spreading activation methods |
8930957, | Sep 13 2012 | International Business Machines Corporation | System, method and program product for cost-aware selection of stored virtual machine images for subsequent use |
8935274, | May 12 2010 | Cisco Technology, Inc | System and method for deriving user expertise based on data propagating in a network environment |
8965957, | Dec 15 2010 | SAP SE | Service delivery framework |
8996660, | Mar 17 2009 | Fachhochschule der Wirtschaft; Eck*Cellent IT GmbH | Method and device for the context-driven integration of context-variable systems into process sequences |
9002896, | Aug 23 2011 | Xerox Corporation | Knowledge-assisted approach to dynamically create data sources for variable-data marketing campaigns |
9021456, | Dec 22 2004 | International Business Machines Corporation | Using collaborative annotations to specify real-time process flows and system constraints |
9170803, | Dec 19 2013 | Suse LLC | Runtime patching of an operating system (OS) without stopping execution |
9183501, | May 11 2013 | International Business Machines Corporation | Upper merged ontology for it architecture |
9213698, | Feb 02 2011 | Comindware Ltd.; COMINDWARE LTD | Unified data architecture for business process management and data modeling |
9262126, | Dec 17 2010 | Tata Consultancy Services Limited | Recommendation system for agile software development |
9335991, | Sep 18 2015 | REACTIVECORE LLC | System and method for providing supplemental functionalities to a computer program via an ontology instance |
9372667, | Feb 02 2012 | Airbus Operations Limited; UNIVERSITY OF THE WEST OF ENGLAND BRISTOL | Ontology driven requirements engineering system and method |
9372684, | Sep 18 2015 | REACTIVECORE LLC | System and method for providing supplemental functionalities to a computer program via an ontology instance |
9582495, | Jun 17 2014 | Business Objects Software Ltd. | Domain knowledge driven semantic extraction system |
9672497, | Nov 04 2013 | Snap-On Incorporated | Methods and systems for using natural language processing and machine-learning to produce vehicle-service content |
9800644, | Aug 08 2014 | Software AG | Service oriented query and service query language framework |
9870247, | Jun 16 2014 | CYBER RELIANT CORPORATION | System and method for dynamic provisioning of applications |
9871888, | Dec 28 2015 | SAMSUNG ELECTRONICS CO , LTD | Adaptive function-based dynamic application extension framework |
9940581, | Nov 20 2013 | International Business Machines Corporation | Ontology-aided business rule extraction using machine learning |
20030014502, | |||
20030115078, | |||
20040083135, | |||
20050197995, | |||
20050289504, | |||
20060020565, | |||
20060053098, | |||
20060053135, | |||
20060053172, | |||
20060075013, | |||
20060130024, | |||
20060248458, | |||
20070038438, | |||
20070156622, | |||
20070299799, | |||
20080021700, | |||
20080189278, | |||
20080208774, | |||
20080243770, | |||
20080320460, | |||
20090037237, | |||
20090063224, | |||
20090083110, | |||
20090113394, | |||
20090119095, | |||
20090144306, | |||
20090157587, | |||
20090177777, | |||
20090249374, | |||
20090254540, | |||
20090254574, | |||
20090319981, | |||
20100010957, | |||
20100082691, | |||
20100107165, | |||
20100153160, | |||
20100333078, | |||
20110047149, | |||
20110093463, | |||
20110113069, | |||
20110131560, | |||
20110225293, | |||
20110271176, | |||
20110289520, | |||
20110320187, | |||
20120016858, | |||
20120166992, | |||
20120239605, | |||
20120310963, | |||
20130054286, | |||
20130066921, | |||
20130151553, | |||
20130197966, | |||
20130212060, | |||
20130268260, | |||
20130275164, | |||
20140040275, | |||
20140142924, | |||
20140156733, | |||
20140164298, | |||
20140278479, | |||
20140279201, | |||
20140280314, | |||
20140280918, | |||
20140281846, | |||
20140324501, | |||
20140337273, | |||
20150007156, | |||
20150019207, | |||
20150040099, | |||
20150088888, | |||
20150095473, | |||
20150106837, | |||
20150112664, | |||
20150178071, | |||
20150227452, | |||
20150254289, | |||
20150363386, | |||
20160012126, | |||
20160034578, | |||
20160103912, | |||
20160179934, | |||
20160224537, | |||
20160239745, | |||
20170316061, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 26 2015 | DUFRESNE, MICHEL | REACTIVECORE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044437 | /0241 | |
Oct 03 2017 | REACTIVECORE LLC | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Oct 03 2017 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Oct 17 2017 | SMAL: Entity status set to Small. |
Apr 10 2023 | REM: Maintenance Fee Reminder Mailed. |
Sep 25 2023 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Aug 20 2022 | 4 years fee payment window open |
Feb 20 2023 | 6 months grace period start (w surcharge) |
Aug 20 2023 | patent expiry (for year 4) |
Aug 20 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 20 2026 | 8 years fee payment window open |
Feb 20 2027 | 6 months grace period start (w surcharge) |
Aug 20 2027 | patent expiry (for year 8) |
Aug 20 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 20 2030 | 12 years fee payment window open |
Feb 20 2031 | 6 months grace period start (w surcharge) |
Aug 20 2031 | patent expiry (for year 12) |
Aug 20 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |