#### Maemo Feeds Ontology (MFO)

Model for feeds and alike online streams

    @prefix mfo: <http://tracker.api.gnome.org/ontology/v3/mfo#>

The following classes are defined:

Action, Enclosure, FeedChannel, FeedElement, FeedMessage, FeedSettings, FeedType

# Overview

## Introduction

This ontology is an abstract representation of entries coming from feeds. These feeds can be blogs (any of the common syndication formats can be translated into this representation), podcasts or even some online services (like flickr).

The basic assumption in the ontology is that all these feeds are unidirectional conversations with (from) the author of the content and every post on those channels is a message.

The source of the posts, the feed itself, is an instance of mfo:FeedChannel. Each post in that feed will be an instance of mfo:FeedMessage. The relation between the messages and the channel comes from their superclasses, nmo:communicationChannel (taking into account that mfo:FeedChannel is a subclass of nmo:CommunicationChannel and mfo:FeedMessage a subclass of nmo:Message.

A post can be plain text but can contain also more things like links, videos or Mp3. We represent those internal pieces in instances of mfo:Enclosure. This class has properties to link with the remote and local representation of the resource (in case the content has been downloaded).

Finally, the three important classes (mfo:FeedChannel, mfo:FeedMessage, mfo:Enclosure) are subclasses of mfo:FeedElement, just an abstract class to share the link with mfo:FeedSettings. mfo:FeedSettings contains some common configuration options. Not all of them applies to all, but it is a quite cleaner solution. For instance the mfo:maxSize property only makes sense per-enclosure, while the mfo:updateInterval is useful for the channel.

## Special remarks

In some feeds there can be multiple enclosures together in a group, representing the same resource in different formats, qualities, resolutions, etc. Until further notify, the group will be represented using nie:identifier property. To mark the default enclosure of the group, there is a mfo:groupDefault property.

# Classes

## Action

class with a restricted set of actions

#### Class hierarchy

#### RDF Diagram

#### Predefined instances

mfo:Action has the following predefined instances:

- mfo:refresh-now

## Enclosure

Represents an enclosure of a feed message

Note:
This class emits notifications about changes, and can be monitored using `TrackerNotifier`.

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
groupDefault | boolean |  | Different enclosures can represent the same resource in different formats/resolutions. This representations are grouped using the nie:identifier property and this property identify the default between them.
localLink | FileDataObject |  | Downloaded copy of the enclosure
optional | boolean |  | The enclosure is mandatory to download or only optional
remoteLink | RemoteDataObject |  | Used to store remote URL of enclosure

## FeedChannel

Represents feed channel transfer, typically a download of RSS or ATOM.

Note:
This class emits notifications about changes, and can be monitored using `TrackerNotifier`.

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
action | Action |  | Captures the current action for the channel: Refresh Now
totalCount | integer |  | Total messages count within a channel
type | FeedType |  | Feeds format type which is mapped to plugin used in engine: flickr,rss-atom
unreadCount | integer |  | Unread messages count within a channel
updatedTime | dateTime |  | Captures the updated date and time when the channel is updated

## FeedElement

Superclass for all elements related with feeds, to provide common configuration options

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
feedSettings | FeedSettings |  | Settings
image | string |  |

## FeedMessage

Represents feed entry. May have enclosures attached and certain settings that allow deviation from feed channel’s setup

Note:
This class emits notifications about changes, and can be monitored using `TrackerNotifier`.

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
downloadedTime | dateTime |  | Captures the time stamp when message was downloaded
enclosureList | Enclosure |  | A list of enclosures

## FeedSettings

Represents settings applied to a feed channel or a feed entry. How often it is updated, through which connection type it is delivered, when data expires and so on

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
downloadFlag | boolean |  | To indicate whether enclosures will be downloaded or not
downloadPath | string |  | Download path for enclosures in a message
expiryInterval | integer |  | Expiry interval for feed channel, it tells time that a message in a channel can live. Interpreted as minutes
maxSize | integer |  | Maximum size of enclosure that can be downloaded. Interpreted as KBs
updateInterval | integer |  | Update interval for a feed channel to get updated or refreshed. Interpreted as minutes

## FeedType

class with a restricted set of feed types

#### Class hierarchy

#### RDF Diagram

#### Properties

Name | Type | Notes | Description
--- | --- | --- | ---
name | string |  | Feed format name like rss-atom,flickr,facebook

# Credits and Copyright

Authors:

- Ivan Frade <ivan.frade@nokia.com>
- Jitendra Kumar <jitendra.1.kumar@nokia.com>

Editors:

- Ivan Frade <ivan.frade@nokia.com>

Upstream: Not available

ChangeLog: Tracker changes