Daniel,

I just promoted a simple sketch of a query interpreter and syntax on the unstable branch that handles queries like:

(query-select #'(lambda (person school) (format t "Person named: ~A at ~A~%" (name person) (name school)))
        '(select ((?p person) (?s school))
                  (where (and (> (age ?p) 10) (< (age ?p) 25))
                         (= ?s (school ?p))
                         (string> (name ?s) "Foo")))))

This calls the provided function for all pairs of people and schools for ages between 10 and 25 where the school name is alphabetically greater than "Foo"

If you load and evaluate src/elephant/query-example.lisp you can play with this little hack.

There are absolutely no performance considerations. It essentially does the search through lisp objects that Robert alluded to. It maps all instances of person and uses constraints like (= ?s (school ?p)) to create the connection between objects via slot values. You have to make sure that it can figure out what ?s is before you can use ?s in another expression, so it's pretty restrictive.

Anyway, hopefully this will give you some ideas on how to get started!

Ian


On Mar 6, 2008, at 8:23 AM, [EMAIL PROTECTED] wrote:


On Mar 4, 2008, at 10:38 PM, Ian Eslick wrote:

= A little query interpreter (Waldo?, Daniel?)
Read sets of oids from indices, implement an efficient in-memory sort&merge over oids, and deserialize after the query. I've specified a bunch of this so could provide a set of pointers to start. Looking at some other object query languages and proposing a syntax would be a good place to start

Will definitely like to pick up on this again. Been doing some more reading and think should have some time to invest on this.

- Daniel
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to