Online Presence Ontology (OPO)
As a part of our project aimed to enable the exchange of the Online Presence data, we have created an ontology - the OPO. In this section we give only a brief description of its main components. For more details please refer to OPO Specification.
The main concept in OPO is the OnlinePresence. OnlinePresenceComponents are used to define different dimensions of a user’s presence in the online world and describe the nature of the Online Presence. The Notifiability component can be used to declare willingness of a user to receive notifications from applications (on which he/she is logged); the FIndability stands for the ability of other users to find his/her contact details in public listings while OnlineStatus represents the IM status, used on IM platforms. OnlineStatus in turn, has its own components that enable more precise descriptions of different statuses used by IM platforms. Those components are: Activity, Disturbability, Visibilty , and Contactability.

Examples of Use
In this section we give some elementary examples of the OPO usage. For these examples we use the Turtle syntax, but if you don't like it for some reason you can easily convert the examples to RDF/XML.
For more instructions on how to use OPO, please refer to the HowTo page.
Custom Message
Let us first suppose that we want to represent a custom message declared by a user on his Facebook profile or posted as a Twitter post. First we have to describe a user whose presence we want to represent. For this we use the class foaf:Agent from the FOAF Vocabulary. We create an instance #Milstan, and specify its foaf:mbox as mailto:milan.stankovic@gmail.com in order to uniquely identify it. Then we create an instance of the opo:OnlinePresence, called #MyCurrentPresence and specify its properties opo:customMessage and opo:startTime (the time when the message was published). Finally we assign #MyCurrentPresence to the Agent #Milstan using the property opo:declaresOnlinePresence.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix opo: <http://ggg.milanstankovic.org/opo/ns#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
:Milstan rdf:type foaf:Agent;
foaf:mbox <mailto:milan.stankovic@gmail.com>.
:MyCurrentPresence rdf:type opo:OnlinePresence;
opo:customMessage "just watching the game, having a bud";
opo:startTime "2008-03-01T18:51:19".
:Milstan opo:declaresOnlinePresence :MyCurrentPresence.
If the data about our example user as a foaf:Agent is already declared somewhere (for example in his FOAF file) we don't have to declare it again. We can just reuse it referring to the user by his URI (for example http://ggg.milanstankovic.org/foaf.rdf#milstan)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix opo: <http://ggg.milanstankovic.org/opo/ns#>.
:MyCurrentPresence rdf:type opo:OnlinePresence;
opo:customMessage "just watching the game, having a bud";
opo:startTime "2008-03-01T18:51:19".
<http://ggg.milanstankovic.org/foaf.rdf#milstan> opo:declaresOnlinePresence :MyCurrentPresence.
Online Status
If we want to declare the user's presence on an IM platform, we usally want to specify his Online Status. Here is the example that shows how to do it. First we define an opo:OnlineStatus called #MyOnlineStatus and describe it in terms of opo:OnlineStatusComponents as opo:Active (the user is currently present on the service), opo:Available (as opposed to busy), opo:Visible (the user does not hide), and opo:ConstrainedContactability (not everyone is allowed to contact this user). Then we create an opo:OnlinePresence, called #MyCurrentPresence, specify the time when it was declared and define it in terms of opo:OnlinePresenceComponents. We want to say that our user allows notifications from applications, so we assign the opo:AllNotificationsPass component to#MyCurrentPresence. We also assign it the opo:PubliclyFindable component to specify that user's contact details are findable in public listings. Most importantly, we add the previously defined #MyOnlineStatus to #MyCurrentPresence. Finally we state that our user declares #MyCurrentPresence.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix opo: <http://ggg.milanstankovic.org/opo/ns#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
:MyOnlineStatus rdf:type opo:OnlineStatus;
opo:hasStatusComponent opo:Active, opo:Available, opo:Visible, opo:ConstrainedContactability.
:MyCurrentPresence rdf:type opo:OnlinePresence;
opo:startTime "2008-03-01T18:51:19";
opo:hasPresenceComponent opo:AllNotificationsPass, opo:PubliclyFindable, :MyOnlineStatus.
<http://ggg.milanstankovic.org/foaf.rdf#milstan> opo:declaresOnlinePresence :MyCurrentPresence.
If we assign URIs to opo:OnlineStatuses their descriptions could be reused like the descriptions of foaf:Agents (as showed in the previous example). Reusable descriptions of opo:OnlineStatuses for Skype and GTalk can be found in documents skype.n3 and gTalk.n3.
Resources:
Coordinators :
- Milan Stankovic
- Jelena Jovanovic
-
Contributors :
- Design by Minimalistic Design
- OPO Logo by Uros Krcadinac
- Copyright © 2008, Milan Stankovic
