OK, so here are a bunch of ideas which I am trying to fit together. These seem to be very, very related. Seems like all this stuff needs to be synthesized together somehow:
- Ontology: An ontology is a representation of something that exists in reality. An ontology deals with questions concerning what entities exist or can be said to exist, and how such entities can be grouped, related within a hierarchy, and subdivided according to similarities and differences.
- Knowledge base: A knowledge base is an information repository that provides a means for information to be collected, organized, shared, searched and utilized. It can be either machine-readable or intended for human use.
- Business rules engine: A business rules engine is a software system that executes one or more business rules in a runtime production environment. The rules might come from legal regulation ("An employee can be fired for any reason or no reason but not for an illegal reason"), company policy ("All customers that spend more than $100 at one time will receive a 10% discount"), or other sources. A business rule system enables these company policies and other operational decisions to be defined, tested, executed and maintained separately from application code.
- TBox: A TBox is a "terminological component", a conceptualization associated with a set of facts, known as an ABox.
- ABox: an ABox is an "assertion component", a fact associated with a terminological vocabulary within a knowledge base.
- Differential Diagnosis: A differential diagnosis is a systematic diagnostic method used to identify the presence of an entity where multiple alternatives are possible, and may also refer to any of the included candidate alternatives. This method is essentially a process of elimination or at least of obtaining information that shrinks the "probabilities" of candidate conditions to negligible levels.
As I understand it:
- A knowledge base is an ontology + assertions. A knowledge base is an ABox.
- Off-the-shelf software does this "stuff" above. However, there is little software which uses global standards to build useful things. For example, a company called LogicNets provides a software application that lets you build "logical nets", or a decision tree or process node, (here is a video) which seems to allow you to use some type of knowledge base or rules (that seems to be what a logic net is). So, there seems to be off-the-shelf software which allows you to build systems using knowledge bases.
- Network theory and graph theory seem to be part of this equation.
There seems to be an entire alphabet soup of global standard technologies which are being created, building on top of RDF and OWL related to knowledge bases, business rules, etc:
- SPARQL: A language for querying RDF. http://www.w3.org/TR/rdf-sparql-query/
- SWRL: A Semantic Web Rule Language Combining OWL and RuleML. http://www.w3.org/Submission/SWRL/
- RIF: An XML language for expressing rules which computers can execute. http://www.w3.org/2005/rules/wiki/RIF_FAQ
- SPIN: SPARQL Inferencing Notation (SPIN). SPIN is a SPARQL-based rule and constraint language for the Semantic Web. SPIN is also a mechanism to represent reusable SPARQL queries as templates and to define new SPARQL functions with a web-friendly syntax. http://www.w3.org/Submission/spin-overview/
And, oh yeah, throw XBRL into this equation.
What seems to draw all these things together is the desire for meaningful information exchange. There are proprietary ways of doing these things and there are global standard ways of doing them. Clearly global standard ways seem preferable to me and the effort being put forth to create these standards seems to support my preference. It seems that there is a high risk these days of choosing the wrong technology because many of these things are so new and things seem to be moving rather fast.