> 2. What we have decided is to make separate persistent class for each > predicate.
So, class is a predicate, right? >3. (defpclass dependson () > ((subject :accessor subject) > (predicate :accessor predicate) > (object :accessor object))) Why do you need a predicate slot then? Predicate for dependson class is dependson. > 4. How do I index a slot so that later if I have a query where I have been provided with two slot values I should be able to get the third slot value. For example: Force-dependson-? should return "mass" and "acceleration". Elephant implements (on a low level) key-value pair store rather than a triple store. If you want a triple store, there are basically two way to do it -- either use compound keys, e.g. (subject, predicate)->object. Or use nested key-value stores, something like subject->(predicate->object). Class-per-predicate essentially implements later approach with nested key-value stores -- because each class in Elephant has its own btrees for indices. So, just use get-instances-by-value. Like (ele:get-instances-by-value 'dependson 'object value) or (ele:get-instances-by-value 'dependson 'subject value) Pretty obvious, no? Either you've got confused by your own constructs, or I've misunderstood something. _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel