Online Presence Ontology

From Wikipedia, the free encyclopedia
  (Redirected from Persistent user)
Jump to: navigation, search

The OPO (Online Presence Ontology) is an ontology which aims to model the dynamic aspects of a user’s presence online and to enable exchange of the Online Presence data. The creator of the OPO is Milan Stankovic, a young researcher and a member of the GOOD OLD AI Research Network. OPO is mentioned in W3C Social Web Incubator Group final report[1] as one of the vocabularies that support the publishing of Social Web data on the Semantic Web, along with FOAF and SIOC.


OPO is a descriptive vocabulary expressed using the Resource Description Framework (RDF) and the Web Ontology Language (OWL). As such, it can be used by machines (software) for manipulating with user's OPO data or doing different analysis of user's online activity, for instance by querying it with an RDF query language (e.g. SPARQL).

Ontology Design[edit]

Class diagram of the Online Presence Ontology.

The main concept in OPO is the OnlinePresence. It represents a placeholder for all the aspects of a user’s presence in the online world. OnlineStatusComponent represents an abstract component of the OnlinePresence; its subclasses define different dimensions of a user’s presence in the online world and describe the nature of the Online Presence. The Findability stands for a user's willingness to let other users find his/her contact details in public listings. The Notifiability component can be used to declare willingness of a user to receive notifications from applications (on which he/she is logged on), 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: Visibility, Activity, Contactability, and Disturbability.


Apart from facilitating the integration of online presence data from various sources, OPO can also be beneficial for transferring data from one service to another. A lot of users do copy-paste of their custom messages, for example from gTalk to Facebook (and vice versa). Likewise, they tend to upload the same avatar on different messengers. This manual work is an annoyance that users can easily be relieved from by introducing a meaningful data exchange protocol between services. The first thing needed to accomplish this goal is a semantic representation of the online presence data which would serve as a basis for developing exchange mechanisms along the ideas outlined by the Data Portability initiative.

The domain where OPO can make a significant contribution is the exchange of user's statuses on various IMs. OPO provides a flexible model for representing the semantics of online statuses thus making their descriptions precise and understandable for the IM platform exchanging them.

Currently different IM platforms use different status scales, and when users from different platforms meet in an inter-platform chat (on services like Meebo, etc.) their original statuses are often lost. This is because currently, users’ online statuses are exchanged over the XMPP protocol, by mapping them to a semantically very poor status scale used in XMPP. In those mappings the semantics of original statuses is largely reduced. To face this issue OPO allows for precise descriptions of IM status characteristics so that they can be exchanged between platforms with their semantics fully preserved. Thus the OPO serves, in this domain, as a mediator preserving the semantics of online status scales in their exchanges, enabling more precise transfers of data between heterogeneous services.


The following OPO data (written in Turtle format) describes user 'darthVader' who has posted a new custom message on a Twitter microblogging service and another user 'luke' who also posted a custom message which is a reply of darthVader's one.

@base <>.
@prefix rdf: <>.
@prefix opo: <>.
@prefix foaf: <>.
@prefix sioc: <>.

:darthVaderTwitterAccount rdf:type sioc:UserAccount;
foaf:accountServiceHomepage <>;
foaf:accountName "darthVader".

:darthVaderStatus rdf:type sioc:Post;
sioc:content "Luke, I am your father.".

:darthVaderPresence rdf:type opo:OnlinePresence;
opo:customMessage :darthVaderStatus;
opo:startTime "2008-03-01T18:51:19";
opo:declaredOn :darthVaderTwitterAccount.

<> opo:declaresOnlinePresence :darthVaderPresence.

:lukeTwitterAccount rdf:type sioc:UserAccount;
foaf:accountServiceHomepage <>;
foaf:accountName "luke".

:lukeStatus rdf:type sioc:Post;
sioc:content "No... No! That's not true! That's impossible!";
sioc:reply_of :darthVaderStatus.

:lukePresence rdf:type opo:OnlinePresence;
opo:customMessage :lukeStatus;
opo:startTime "2008-03-01T18:51:49";
opo:declaredOn :lukeTwitterAccount.

<> opo:declaresOnlinePresence :lukePresence.

OPO and FOAF[edit]

For deeper understanding of OPO and the notion of online presence itself, a comparison to FOAF might be useful. It is very important to distinguish the static and more persistent users online properties modeled by FOAF (like name, gender, homepage, etc.) from frequently changing properties addressed by the OPO (like activities, custom message and IM status). The OPO is actually meant for representing dynamic aspects of user's profiles, and it could be said that it complements FOAF in a way. Therefore, it is quite natural that OPO is connected to FOAF through some properties (e.g. agent).

See also[edit]


External links[edit]