Understanding Answer Set Programming
So you have a thick metadata layer that describes reports, you have highly-expressive ontologies that describe reported information, and you have all the reported facts themselves that are provided in the report. But you are still missing two things from your knowledge based system.
- You need software to process all that information (i.e. rules engine).
- You need a mechanism to help the user of the software understand the results of the processing (i.e. justification mechanism).
As I pointed out before, XBRL Formula processors have specific defeciencies in their capabilities so they alone will not do.
So what do you do?
Well, you could build your own rules engine to process everything. After all, everything distills down to logic gates that are used for processing. What it is possible to build your own rules engine, creating a rules engine is not a trivial task.
What about using existing processing tools? That can work. You could convert everything to the semantic web stack of technologies and use existing semantic reasoners. That could work.
I thought that PROLOG or DATALOG could work. Those could work, but as I understand it PROLOG uses backward chaining and you will need forward chaining for many of the types of problems you need to solve.
Another approach that I have heard of is answer set programming. The best description of answer set programming that I have run across is this: (from Answer Set Programming: A Primerby Thomas Eiter, Giovambattista Ianni, and Thomas Krennwallner)
Answer Set Programming (ASP) is a declarative problem solving paradigm, rooted in Logic Programming and Nonmonotonic Reasoning, which has been gaining increasing attention during the last years.
The article Answer Set Programming at a Glance by GERHARD BREWKA, THOMAS EITER, AND MIROSLAW TRUSZCZYNSKI explains the motivation benind and key concepts of answer set programming which is a promising approach to declarative problem solving.
Answer set programming seems to be related to PROLOG.
There are free answer set programming processors such as Potassco. (you can download Potassco here) DLVHEX is another. Here is a comparison of implementations.
You can do an online demo here.
Reader Comments