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
-~----------~----~----~----~------~----~------~--~---

Reply via email to