Thanks for the pointer to Kodkod - it looks very interesting. I wonder if we aren't talking apples and oranges though. Datalog may be a basic reasoner, but it's a simple recursive query language for data. Can you even get all results out of a SAT solver or do they stop when satisfiable?
It's for this query purpose that I envisioned primary use of Datalog, although I can certainly see the utility of more powerful reasoners too. Rich On Feb 5, 12:22 pm, John Fries <john.a.fr...@gmail.com> wrote: > Yes. I can make a strong endorsement for Kodkod, a Java-based relational > model finder.http://alloy.mit.edu/kodkod/ > I used it fairly extensively last year to solve scheduling problems, and > I've corresponded with its creator. > > One problem with Datalog-style reasoners is that, because they want to > guarantee a certain execution time, they give up much of the expressiveness > of relational logic. Instead, Kodkod provides the correct interface to > relational logic, and relies on an underlying SAT solver (such as MiniSat) > to solve the problems in a reasonable amount of time. This has proven to be > a good approach, because SAT solvers have been improving at a tremendous > rate over the last 10 years, and are now blazingly fast. > > Another advantage of Kodkod over, say, FaCT++ or Pellet (which also provide > open-world semantics) is that you are not tied into all the assumptions of > the semantic web (OWL, RDF, XML, etc), which can get pretty clunky when all > you want is an in-memory reasoner. You only have to be reasonably > comfortable with relational logic (e.g. "for all x: Red x") to be able to > use Kodkod. > > The only deficiency I found in Kodkod was that, because the author wanted to > support an audience whose primary language was Java, the user must express > their queries using a Java class-based syntax. But this seems like a > perfect use of Clojure, which could provide a much more natural query > syntax. > > On Thu, Feb 5, 2009 at 4:29 AM, Rich Hickey <richhic...@gmail.com> wrote: > > > On Feb 4, 5:22 pm, John Fries <john.a.fr...@gmail.com> wrote: > > > Guaranteed-termination is very desirable. However, you can have > > guaranteed > > > termination with an open-world assumption just as well. And I think an > > > open-world assumption does a better job of mimicking human reasoning. > > > Do you have a specific reasoner/algorithm in mind? > > > Rich --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---