• To sense user interests, MOCA uses Tags.
  • Tags are small items of information with well defined semantics.
  • Each tag is associated with a counter. The counter is used to track how many times the user was tagged or to sum points associated with the tag.
  • Tags are defined in MOCA Console or by the app.
  • For example: Restaurant Video Store Woman Parking Gym
  • Tags can be attached to specific locations by using beacons or programmatically by API.
  • Tag counters are used to rank the tags.

-A single Tag is modeled as follows:

/**
 * MOCATag represents a category of interest. Sample tags include "books",
 * "video", "music", "food", or
 */
public interface MOCATag {
    /**
     * Get tag's name.
     *
     * @return tag name
     */
    public String getName();

    /**
     * Get tag's weight.
     *
     * @return weight value
     */
    public double getValue();

    /**
     * Get date tag was created.
     * @return UTC timestamp
     */
    public long getCreatedAt();

    /**
     * Get last modification date.
     * @return UTC timestamp
     */
    public long getModifiedAt ();

}

MOCA provides the following methods to manipulate Tags.

/**
       * Retrieves a collection of tags for this instance.
       */
      public Set<MOCATag> getTags();

    /**
     * Add a tag to this instance and increment its value by 1.
     */
    public void addTag (String tagName);

    /**
     * Add a tag with a given value to this instance.
     * @value - update expression with syntax [=|+|-] <double> value.
     * For example "+1" increments the tag value by 1.
     * For example "-2" decrements the tag value by 2.
     * For example "3" or "=3" assign value of 3 to the tag's value.
     */
    public void addTag (String tagName, String value);

    /**
     * Checks if this instance contains a specific tag.
     * @return <code>YES</code> if the instance contains a tag, or <code>NO</code> otherwise.
     */
    public boolean containsTag (String tagName);

    /**
     * Retrieves a value of a specific tag associated with this instance.
     * @return tag value or <code>nil</code> if the tag doest not exist.
     */
    public Double getTagValue (String tagName);