Release notes for LensKit 0.3

The Git changelog and the list of closed tickets and pull requests provide more information on what has happened, including bugs that have been fixed.

Event Infrastructure

For flexibility going forward, LensKit 0.3 introduces a new Event infrastructure (#issue(48)) for representing user data. Users have sequences of events, represented by the Event interface. Each event has an ID and an optional timestamp. Events may be associated with items (subclasses of the ItemEvent interface). Ratings are now rating events; they store a Preference, which represents the preference expressed by the user. All of these interfaces and classes have been moved to the package (with the preferences in o.g.l.d.pref).

As a result of this, all ratings must now have globally-unique rating IDs (which are synthesized when they are not present in the data set). Rating object equality is now defined solely by the event ID as well. Also, the Ratings.fromUserVector method has been removed, as it no longer works.

Rating snapshots now discard timestamps and return IndexedPreference objects, and the IndexedRating object has gone away.

User profiles have also been changed; the UserRatingProfile class has been removed and replaced with UserHistory for a generalized representation of user histories.

Restructured DAO interfaces

The new event infrastructure has necessitated some overhauling of the DAO interface. The new interface is hopefully simpler. There are no longer multiple DAO interfaces in LensKit; everything is consolidated into the DataAccessObject interface (and the old UserItemDataAccessObject and RatingDataAccessObject interfaces have been removed). The methods are renamed to be getEvents and friends. Also, sorting is no longer supported for item and user event sequences.

Integrators may still wish to subclass DataAccessObject to make additional information, such as user or item metadata, available to recommenders.

Implementations have also been renamed:

Other Changes