Copyright © 2008-2010 Milan Stankovic
This work is licensed under a Creative Commons
Attribution License. This copyright applies to the Online Presence Ontology Specification and accompanying documentation in RDF.
Regarding underlying technology, OPO uses 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 online-presence@googlegorups.com mailing list. 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. Building an image of one's presence in the online world represents one of the important means to stay in touch with others and allow them to feal connected.
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. For more information about the project goals and more examples of Ontology use please refer to 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 URIs that MUST be used by implementations of this specification are:
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: Action, Activity, Contactability, Disturbability, Findability, Notifiability, OnlinePresence, OnlinePresenceComponent, OnlineStatus, OnlineStatusComponent, SharingSpace, SourceOfPublishing, StatusMessage, Visibility
Properties: attendedOrganisedEvent, avatar, basedNear, closestFriendsOf, commonInterest, currentAction, currentLocation, currentlyIn, customMessage, declaredBy, declaredOn, declaresOnlinePresence, duration, familyOf, hasPresenceComponent, hasStatusComponent, inactivityPeriod, intendedFor, isPresenceComponentOf, isStatusComponentOf, onlineStatusName, publishedFrom, schoolHomepage, sourceDescription, sourceName, startTime, workplaceHomepage
Instances: Active, AllNotificationsPass, Available, ConstrainedContactability, ConstrainedFindability, DoNotDisturb, FreelyContactable, Inactive, Invisible, NotificationsConstrained, NotificationsProhibited, ProlongedInactive, PubliclyFindable, Visible
In this section we give some broad groups of terms for easier reference. The groups do not cover the totality of terms.
properties shared by the members of a Sharing Space, bounding them together
The core classes in OPO are shown on the following figure.

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).
A user's status message on IM platforms, Social Networks or microblogging services can be specified by opo:customMessage property.
Apart from basic presence descriptions, OPO provides a way to attach additional information about user's context at the time of publishing the presence data, like his/her location (using opo:currentLocation property), the nature of device/application being used for publishing (using opo:publishedFrom property), as well as current actions the user is performing (using opo:currentAction property).
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 define the type of #MyCurrentPresence as opo:OnlinePresence, and then we specify its properties:
After defining OnlinePresece, we define the status message already mentioned as :MyStatusMessage. We first declare its type as sioc:Post, and then specify its sioc:content as 'singing in the rain'.
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:Disturbability), 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.
For more examples please refer to the website of the Online Presence Project.
URI: http://online-presence.net/opo/ns#Action
Action - An action currently performed by the Agent (e.g., listening to music, reading a book). A number of specific action types is defined in OPO - Actions module.
URI: http://online-presence.net/opo/ns#Activity
Activity - OnlineStatusComponent used to represent the state of activity of the Agent. One of the instances (e.g., opo:Active, opo:Inactive, opo:ProlongedInactive) may be used to refer to a concrete state of activity.
URI: http://online-presence.net/opo/ns#Contactability
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. Instances of this class (e.g. opo:FreelyContactable and opo:ConstrainedContactability) may be used to refer to a concrete state of contactability.
URI: http://online-presence.net/opo/ns#Disturbability
Disturbability - OnlineStatusComponent used to represent the wish of an Agent to be or not to be disturbed. Instances of this class (e.g. opo:Available and opo:DoNotDisturb) may be used to refer to a concrete state of disturbability.
URI: http://online-presence.net/opo/ns#Findability
Findability - The OnlinePresenceComponent used to represent the possibility to find contact details of an Agent in a public listing. Instances of this class (e.g. opo:PubliclyFindable and opo:ConstrainedFindability) may be used to refer to a concrete value of findability.
URI: http://online-presence.net/opo/ns#Notifiability
Notifiability - The OnlinePresenceComponent used to represent the attitude of an Agent towards interaction with applications i.e., the possibility of applications to show notifications. Instances of this class (e.g. opo:AllNotificationsPass, opo:NotificationsConstrained and opo:NotificationsProhibited) may be used to refer to a concrete state of contactability.
URI: http://online-presence.net/opo/ns#OnlinePresence
OnlinePresence - the nature of an Agent's presence in the online world, described in termes of various OnlinePresenceComponents to represent the attitude of an Agent towards interaction with other Agents and Applications, encompassing the Agent's current context as well.
URI: http://online-presence.net/opo/ns#OnlinePresenceComponent
OnlinePresenceComponent - A component of OnlinePresence used to represent one of its dimensions.
URI: http://online-presence.net/opo/ns#OnlineStatus
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://online-presence.net/opo/ns#OnlineStatusComponent
OnlineStatusComponent - The component of the OnlineStatus representing one of its dimensions.
URI: http://online-presence.net/opo/ns#SharingSpace
SharingSpace - A group of people belonging to a space for sharing online psresence data - the intended audience of presence information.
URI: http://online-presence.net/opo/ns#SourceOfPublishing
SourceOfPublishing - The source that can publish Online Presence data.
URI: http://online-presence.net/opo/ns#StatusMessage
StatusMessage - A status message that cannot be commented on.
URI: http://online-presence.net/opo/ns#Visibility
Visibility - OnlineStatusComponent used to represent the possiblity of others to see the OnlineStatus of the Agent. Instances of this class (e.g. opo:Visible and opo:Invisible) may be used to refer to a concrete state of visibility.
URI: http://online-presence.net/opo/ns#attendedOrganisedEvent
Attended Organised Event - The organised event attended by people in the Sharing Space. The OrganisedEvent is described in Semantic Web Conference Ontology, and refers to ''an event in time and space which is planned and organised''. The fact that a group of people attended the same event bounds them to a particular Sharing Space.
URI: http://online-presence.net/opo/ns#avatar
avatar - The graphical representation of the Agent used to depict him in online systems.
URI: http://online-presence.net/opo/ns#basedNear
Based Near - The location where members of the Sharing Space are based.
URI: http://online-presence.net/opo/ns#closestFriendsOf
Closest Friends Of - The Person who's closest friends belog to the Sharing Space.
URI: http://online-presence.net/opo/ns#commonInterest
Common Interest - An interst shared by people in the Sharing Space. The inteded use of this term is similar to the use of foaf:interest.
URI: http://online-presence.net/opo/ns#currentAction
currentAction - Current action performed by the Agent. Specific Action types are defined in OPO - Actions module.
URI: http://online-presence.net/opo/ns#currentLocation
currentLocation - Current location of the Agent.
URI: http://online-presence.net/opo/ns#currentlyIn
Currently In - The current location of people in the Sharing Space.
URI: http://online-presence.net/opo/ns#customMessage
customMessage - A message associated with the OnlinePresence, often used in chat programs and social networks as custom title/custom message.
URI: http://online-presence.net/opo/ns#declaredBy
declaredBy - The Agent that declared the OnlinePresence.
URI: http://online-presence.net/opo/ns#declaredOn
declaredOn - The sioc:UserAccount account where the OnlinePresence was declared.
URI: http://online-presence.net/opo/ns#declaresOnlinePresence
declaresOnlinePresence - The OnlinePresence declared by the Agent.
URI: http://online-presence.net/opo/ns#duration
duration - The estimated duration of the OnlinePresence after the startTime.
URI: http://online-presence.net/opo/ns#familyOf
Family Of - The Person who's family members belog to the Sharing Space.
URI: http://online-presence.net/opo/ns#hasPresenceComponent
hasOnlinePresence - OnlinePresenceComponent included in this OnlinePresence.
URI: http://online-presence.net/opo/ns#hasStatusComponent
hasStatusComponent - OnlineStatusComponent included in this OnlineStatus.
URI: http://online-presence.net/opo/ns#inactivityPeriod
inactivityPeriod - Period of inactivity on a certain service.
URI: http://online-presence.net/opo/ns#intendedFor
intendedFor - The audience (Sharing Space) that the presence information is intendeed for.
URI: http://online-presence.net/opo/ns#isPresenceComponentOf
isPresenceComponentOf - The OnlinePresence that has this OnlinePresenceComponent
URI: http://online-presence.net/opo/ns#isStatusComponentOf
isStatusComponentOf - The OnlineStatus that includes this OnlineStatusComponent.
URI: http://online-presence.net/opo/ns#onlineStatusName
OnlineStatusName - A name used by chat systems to distinguish their various statuses.
URI: http://online-presence.net/opo/ns#publishedFrom
publishedFrom - The source from which the OnlinePresence is declared (e.g., a mobile device, a Web application, etc.)
URI: http://online-presence.net/opo/ns#schoolHomepage
School Homepage - The homepage of school attended by people in the Sharing Space.
URI: http://online-presence.net/opo/ns#sourceDescription
sourceDescription - the description of the SourceOfPublishing.
URI: http://online-presence.net/opo/ns#sourceName
sourceName - The name of the SourceOfPublishing.
URI: http://online-presence.net/opo/ns#startTime
startTime - The time when the OnlinePresence started.
URI: http://online-presence.net/opo/ns#workplaceHomepage
Workplace Homepage - The homepage of workplace of people in the Sharing Space.
URI: http://online-presence.net/opo/ns#
Active - The Agent is active on the system.
URI: http://online-presence.net/opo/ns#
AllNotificationsPass - Agent can receive notifications from applications
URI: http://online-presence.net/opo/ns#
Available - The agent is not busy and therefore available for contatc by other Agents.
URI: http://online-presence.net/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://online-presence.net/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://online-presence.net/opo/ns#
DoNotDisturb - The Agent is busy and does not want to be contacted by other Agents.
URI: http://online-presence.net/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://online-presence.net/opo/ns#
Inactive - The Agent is inactive for at least 5 min.
URI: http://online-presence.net/opo/ns#
Invisible - The Agent's OnlineStatus is not visible to other Agents
URI: http://online-presence.net/opo/ns#
NotificationsConstrained - The acceptance of notifications from applications is somehow constrained (by using some rules or policies).
URI: http://online-presence.net/opo/ns#
NotificationsProhibited - Agent cannot receive any notification form applications
URI: http://online-presence.net/opo/ns#
ProlongedInactive - The Agent is inactive for at least 20 min.
URI: http://online-presence.net/opo/ns#
PubliclyFindable - The Agent's contact details canbe found by anyone on the Web
URI: http://online-presence.net/opo/ns#
Visible - The Agent's OnlineStatus is visible to other Agents
For a more detailed description of changes and respective design decisions, please refer to What's new in version 0.5?
The document was generated using SpecGen5. I would like to thank to all the members of the online-presence@googlegorups.com mailing list and all the people who gave their comments during conferences and workshops. Special thanks to Monsieur Philippe Laublet for his valuable comments and guidings throughout my internship.