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 org.grouplens.lenskit.data.event
(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:
-
SimpleFileDAO
has been renamed toSimpleFileRatingDAO
, as it only supports rating data. -
RatingCollectionDAO
has been renamed toEventCollectionDAO
. It contains some optimizations to speed filtering.
Other Changes
-
The deprecated
SparseVector.wrap
methods now returnSparseVector
rather thanMutableSparseVector
, so that they can be overridden inImmutableSparseVector
. -
Removed
NoSessionException
, as it has not been in use for some time. -
PackedRatingSnapshot
now randomizes the order of ratings in the snapshot to prevent ordering effects from impacting iterative methods. -
Updated to GL Common 0.3. This introduces the requirement that all elements in cursors be non-null.
-
Made
IdentityVectorNormalizer
serializable (#issue(106)). -
Fixed bug where the recommender engine opened multiple DAOs for each session (#issue(108)).
-
Made POMs runnable with Maven 2, so Maven 2 can be used to compile LensKit (although it cannot generate the site) (#issue(72)).