Copyright © 2008 by Milan Stankovic
This work is licensed under a Creative Commons License. This copyright applies to the Online Presence Ontology Specification and accompanying documentation and does not apply to OnlinePresence data formats, ontology terms, or technology.
Regarding underlying technology, OnlinePresence relies heavily on W3C's RDF technology, an open Web standard that can be freely used by anyone.
This visual layout and structure of the specification was adapted from the FOAF Vocabulary Specification by Dan Brickley and Libby Miller, and SIOC Core Ontology Specification by Uldis Bojars and John G. Breslin.
The Online Presence Ontology (OPO) provides the main concepts and properties required to describe information about user's presence in the online world (e.g., on instant messaging platforms and Social Web sites). This document contains a detailed description of the OPO.
NOTE: This section describes the status of this document at the time of its publication. Other documents may supersede this document.
This specification is an evolving document. This document is generated by combining a machine-readable OPO expressed in RDF/XML with a specification template and a set of per-term documents.
Authors welcome suggestions on the OPO and this document. Please send comments to the author. This document may be updated or added to based on implementation experience, but no commitment is made by the authors regarding future updates.
With the appearance of instant messaging (IM) tools and Social Web sites, most notably Social Networks, Internet faced a proliferation of social activities among users. On a typical service that offers some form of social interactions, users present themselves to their contacts by maintaining user profiles. Services that favor direct and frequent communication tend to include descriptions of user’s temporary state in the profile. By the elements of temporary state, we mean primarily custom messages on IM platforms and social networks, as well as description of availability/willingness to chat. Often, visual representations known as avatars are used to depict user’s online persona.
In fact, if we look at the activity of maintaining this kind of user profiles, that activity is no more than creating an image of one self’s presence in the online world, a representation how one wishes to be seen by his/her contacts. The use of custom messages, IM statuses and avatars became a common way for users to make known the character of their presence on some online service and in the online world in general.
Online Presence Ontology represents a part of our effort to enable semantic descriptions of all that data related to one's presence in the online world and to facilitate its exchange among applications. More information will be available on this project on the project's website.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
Namespace URIs of the general form "http://www.example.com/" represent some application-dependent or context-dependent URI as defined in RFC 2396.
The XML Namespace URI that MUST be used by implementations of this specification is: http://ggg.milanstankovic.org/opo/ns# . GGG in the URI stands for Giant Global Graph.
An alphabetical index of OPO terms, by class (concepts) and by property (relationships, attributes), are given below. All the terms are hyperlinked to their detailed description for quick reference.
Classes: Activity, Contactability, Disturbability, Findability, Notifiability, OnlinePresence, OnlinePresenceComponent, OnlineStatus, OnlineStatusComponent, Visibility,
Properties: IsPresenceComponentOf, avatar, customMessage, declaredBy, declaredOn, declaresOnlinePresence, duration, hasPresenceComponent, hasStatusComponent, inactivityPeriod, isStatusComponentOf, onlineStatusName, startTime,
Instances: Active, AllNotificationsPass, Available, ConstrainedContactability, ConstrainedFindability, DoNotDistrub, FreelyContactable, Inactive, Invisible, NotificationsConstrained, NotificationsProhibited, ProlongedInactive, PubliclyFindable, Visible,
The core class in OPO is OnlinePresence. It represents a placeholder for all the aspects of a user’s presence in the online world. In order to enable representation of new, currently unpredictable, aspects of presence in the online world, we defined a class, OnlinePresenceComponent, to represent an abstract component of the OnlinePresence. Relying on the current state of practice in the area of online social interactions we have defined three components of Online Presence: Online Status, Notifiability and Findability (for better understanding please see the figure below).
The notion of Notifiability helps to distinguish the inclination towards interaction with other users from the willingness to be notified by an application (e.g. a chat platform) when a request for interaction arrives. It is used to specify the user's attitude towards receiving notifications while hi/she is present on a service. This can be declared using the Notifiability component, by assigning one of the different Notifiability instances (e.g., AllNotificationsPass, NotificationsProhibited, NotificationsConstrained) to the OnlinePresence.
Findability is a component meant to describe the possibility of other users to access a person’s contact details and online presence data. The approach for defining Findability is the same as with Notifiability. Different predefined instances are used to denote various states of Findability (e.g., PubliclyFindable and ConstrainedFindability).
The OnlineStatus represents what one may call availability for chat – the status used by IM platforms. In order to enable representation of IM status scales used on different IM platforms, we introduced the class OnlineStatusComponent, to denote different dimensions of OnlineStatus. We defined the following components of the Online Status: Activity, Contactability, Disturbability, Visibility. Different OnlineStatuses can be defined by combining instances of those OnlineStatusComponents (please see the example). The predefined instances of OnlineStatusComponents are shown on the figure below.

Here is a very basic document describing a user's OnlinePresence in Turtle syntax:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. |
This brief example introduces the basics of OPO. It says that a resource http://ggg.milanstankovic.org/foaf.rdf#milstan, that is in fact elsewhere defined as a foaf:Agent, is declaring its presence in the online world. In order to identify that presence in further statements, we have assigned the identifier #MyCurrentPresence to it.
The following lines list the properties of #MyCurrentPresence. First we definethe type of #MyCurrentPresence as opo:OnlinePresence, and then we specify its properties:
In the last part, #MyOnlineStatus is declared as opo:OnlineStatus and defined in terms of its components. The following instances are assigned: opo:Active (as an instance of opo:Activity), opo:Available (as an instance of opo:Availability), opo:Visible (as an instance of opo:Visibility), opo:FreelyContactable (as an instance of opo:Contactability). Defined like this, this Online Status corresponds to SkypeMe mode, the most active and most available IM Status used.
URI: http://ggg.milanstankovic.org/opo/ns#
Activity - OnlineStatusComponent used to represent the state of Activity of the Agent (e.g., Active, Inactive, ProlongedInactive).
URI: http://ggg.milanstankovic.org/opo/ns#
Contactability - OnlineStatusComponent used to represent the state of contactability of an Agent. Contatctability relates to the possiblity of other Agents to conatct the Agent freely or only with regard to some conditions.
URI: http://ggg.milanstankovic.org/opo/ns#
Disturbability - OnlineStatusComponent used to represent the wish of an Agent to be or not to be disturbed.
URI: http://ggg.milanstankovic.org/opo/ns#
Findability - The OnlinePresenceComponent used to represent the possibility to find contact details of an Agent in a public listing
URI: http://ggg.milanstankovic.org/opo/ns#
Notifiability - The OnlinePresenceComponent used to represent the attitude of an Agent towards interaction with applications i.e., the possibility of applications to show notifications.
URI: http://ggg.milanstankovic.org/opo/ns#
OnlinePresence - OnlinePresence, described in termes of various OnlinePresenceComponents to represent the attitude of an Agent towards interaction with other Agents and Applications.
URI: http://ggg.milanstankovic.org/opo/ns#
OnlinePresenceComponent - A component of OnlinePresence used to represent one of its dimensions.
URI: http://ggg.milanstankovic.org/opo/ns#
OnlineStatus - The OnlinePresenceComponent used to represent the attitude of an Agent towards the possibility of communication with other Agents. The OnlineStatus is defined by its components.
URI: http://ggg.milanstankovic.org/opo/ns#
OnlineStatusComponent - The component of the OnlineStatus representing one of its dimensions.
URI: http://ggg.milanstankovic.org/opo/ns#
Visibility - OnlineStatusComponent used to represent the possiblity of others to the OnlineStatus of the Agent
URI: http://ggg.milanstankovic.org/opo/ns#
isPresenceComponentOf - The OnlinePresence that has this OnlinePresenceComponent
URI: http://ggg.milanstankovic.org/opo/ns#
avatar - The graphical representation of the Agent used to depict him in online systems.
URI: http://ggg.milanstankovic.org/opo/ns#
customTitle - A message associated with the OnlinePresence, often used in chat programs and social networks as custom title
URI: http://ggg.milanstankovic.org/opo/ns#
delaredBy - The Agent that declared the OnlinePresence
URI: http://ggg.milanstankovic.org/opo/ns#
declaredOn - The OnlineAccount where the OnlinePResence was declared.
URI: http://ggg.milanstankovic.org/opo/ns#
declaresOnlinePresence - The OnlinePresence delcared by the Agent
URI: http://ggg.milanstankovic.org/opo/ns#
duration - The estimated duration of the OnlinePresence after the startTime
URI: http://ggg.milanstankovic.org/opo/ns#
hasOnlinePresence - OnlinePresenceComponent incuded in this OnlinePresence
URI: http://ggg.milanstankovic.org/opo/ns#
hasStatusComponent - OnlineStatusComponent included in this OnlineStatus
URI: http://ggg.milanstankovic.org/opo/ns#
inactivityPeriod - Period of inactivity on a certain service
URI: http://ggg.milanstankovic.org/opo/ns#
isStatusComponentOf - The OnlineStatus that includes this OnlineStatusComponent.
URI: http://ggg.milanstankovic.org/opo/ns#
OnlineStatusName - A name used by chat systems to distinguish their various statuses.
URI: http://ggg.milanstankovic.org/opo/ns#
startTime - The time when the OnlinePresence started
URI: http://ggg.milanstankovic.org/opo/ns#
Active - The Agent is active on the system.
URI: http://ggg.milanstankovic.org/opo/ns#
AllNotificationsPass - Agent can receive notifications from applications
URI: http://ggg.milanstankovic.org/opo/ns#
Available - The agent is not busy and therefore available for contatc by other Agents.
URI: http://ggg.milanstankovic.org/opo/ns#
ConstrainedContactability - The Agent cannot be contated by anyone on the Web, but the contactability is controled by some rules/policies. For describing most common IM statuses, this component should be used in most cases. The common practice in IM is that a user can be contacted only by other users from his/her contact list. That represents a restriction and thus ConstrainedContactability should be used in those cases (see our example gTalk statuses). There are, therefore, exceptions from this practice that allow everyone to contact a user (e.g., SkypeMe mode). For those cases opo:FreelyContactable should be used (see our example skype statuses).
URI: http://ggg.milanstankovic.org/opo/ns#
ConstrainedFindability - The Agent's contact details cannot be found by anyone on the Web, but the findability is controled by some rules/policies.
URI: http://ggg.milanstankovic.org/opo/ns#
DoNotDisturb - The Agent is busy and does not want to be contacted by other Agents.
URI: http://ggg.milanstankovic.org/opo/ns#
FreelyContactable - The Agent can be contacted by anyone on the Web. Please note that this component should be used carefully, only for statuses that allow everyone on the net to contact a user (e.g., SkypeMe mode). For most cases opo:ConstrainedContactability should be more convenient.
URI: http://ggg.milanstankovic.org/opo/ns#
Inactive - The Agent is inactive for at least 5 min.
URI: http://ggg.milanstankovic.org/opo/ns#
Invisible - The Agent's OnlineStatus is not visible to other Agents
URI: http://ggg.milanstankovic.org/opo/ns#
NotificationsConstrained - The acceptance of notifications from applications is somehow constrained (by using some rules or policies).
URI: http://ggg.milanstankovic.org/opo/ns#
NotificationsProhibited - Agent cannot receive any notification form applications
URI: http://ggg.milanstankovic.org/opo/ns#
ProlongedInactive - The Agent is inactive for at least 20 min.
URI: http://ggg.milanstankovic.org/opo/ns#
PubliclyFindable - The Agent's contact details canbe found by anyone on the Web
URI: http://ggg.milanstankovic.org/opo/ns#
Visible - The Agent's OnlineStatus is visible to other Agents
The document was generated using SpecGen5 tool with the help of my friend Boris Momcilovic. I would also like to thank my friend, Jelena Jovanovic, for useful suggestions during our coffee discussions, as well as to the ÖAD that provided the scholarship for me to finish the ontology and this specification in Vienna.