Logic Programming and Theories

People seem to throw around the term "ontology" when discussing artificial intelligence and it is hard to understand precisely what they are referring to.  Also, I rarely hear the word "theory" used when discussing artificial intelligence. Not sure why that is.

When trying to understand the capabilities of software to perform reasoning, the first thing to understand is the type of logical reasoning that is being performed.  

Logic is a formal system that defines the rules of correct reasoning.  Logical reasoning is about arriving at a conclusion in a rigorous way.  There two broad categories of logical reasoning: deductive and non-deductive.  

Deductive reasoning provides a result that is guaranteed to be certain, therefore the result can be relied upon without doubt and humans need not be involved in a process because of the certainty of deductive reasoning.  Non-deductive reasoning, on the other hand, is not certain, meaning it could be correct but it could also be incorrect.  Non-deductive reasoning is based on probability.  And so non-deductive reasoning approaches must have a human in the loop to deal with that uncertainty.  There are three types of non-deductive reasoning: inductive, abductive, and analogy.

Computational logic is a branch of logic and computer science that relates to getting computers to perform correct reasoning. Logic programming languages express facts using machine-readable logical statements, then use software to make sure all the facts are consistent and then draw inferences from these facts. To perform proper logical reasoning, one needs a complete set of logical statements.

That set of logical statements, preferably a complete set of logical statements, is a theory. Theories should be "precise" meaning that they describe an area of knowledge correctly, "consistent" meaning that there are no logical inconsistencies in the theory, and "complete" meaning that they fully represent the area of knowledge given the goals and objectives of the theory.

Modern PROLOG is a tool for representing logical theories using logic programming. DATALOG is a very safe subset of PROLOG.

Theories are better tools than ontologies when you want to maximize reasoning capability because theories have more expressive power than an ontology.  A theory can have an ontology included within the theory. But ontologies cannot express everything that a theory can be used to express.


Another graphic shows similar information that is shown above in another way, as a spectrum.  Starting on the left you have lightweight knowledge representations and on the right the knowledge representations become more formal and more heavyweight:


Ontologies are very useful tools, but they are not enough to express all the knowledge one might need in a complete logical system.  Basically, Knowledge = Ontology + Rules.  Evidence of this is the W3C adding SHACL to the semantic web stack to supplement the capabilities of OWL.

Graph databases are also very useful tools.  But graph databases generally don't include logic engines that can process all of the logic represented within the graph database.  Therefore which graph databases can generally express theories using GSQL, they cannot fully process those logical statements as if it were a theory.  Graph databases can be supplemented to add such logic processing.

Logic programming, the semantic web stack, and graph databases all can be made equivalent in terms of reasoning capability.  You just want to be sure you are comparing apples to apples.

There is one moving piece to this puzzle that I don't understand which is the problem solving methods employed. There are four problem solving methods it seems: (1) sequential, (2) forward-chaining, (3) backward-chaining, (4) hybrid approach.  I know that forward-chaining can do anything that backward-chaining can do but not the other way around.  But backward-chaining has some advantages.

Another thing is that each of the three problem solving approaches above has a "basket" of PROS and CONS that you have to live with.  Each can do the job; but in different ways. You will want professional knowledge graphs. Details do matter.

No single technology is the best fit for every use case.  It is critically important to understand the goal(s) and objective(s) of your system stakeholders. This will help the stakeholders agree on an undisputed core of a system which then can be represented using logic.

Additional Information:

Comments

Popular posts from this blog

Relational Knowledge Graph System (RKGS)

Getting Started with Auditchain Luca

Evaluating the Quality of XBRL-based Financial Reports