Dear all,
The resolution engine has been re-engineered to dramatically improve performance of several types of algorithms. In previous versions, a negated literal in the body of a clause was resolved as a separate goal : as a consequence, intermediate results found during its resolution could not be re-used : so the same facts possibly had to be established multiple times in the same query. Similarly, aggregate clauses were resolved in isolation. As a consequence, reports computed in pyDatalog, such as the
PYPL index, were very slow.
Finally, the new resolution engine is now able to switch from depth-first to breadth-first exploration of the computation tree as appropriate. With this, pyDatalog can be used both for rule-based expert system (depth-first) and for graph analysis (breadth-first). See
issue #7. Thanks to this, the
hashtag problem can now be solved under 7 seconds.
Because of the significant re-write, this is a release candidate. Please let me know if you have any issue with it.
Best regards,
Pierre Carbonnelle