OPO

Online Presence Ontology Specification

Working Draft — 13 June 2008

This version:
http://milanstankovic.org/opo/specs/2008/OPO-20080613/
Latest version:
http://milanstankovic.org/opo/specs/
Last Update:
2008-06-13
Revision:
0.3
Author:
Contributors:

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.

 

Abstract

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.

Status of this Document

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.

Table of Contents

  1. Introduction
    1. Terminology and notation
  2. OPO ontology at a glance
  3. OPO ontology overview
    1. Example
  4. Cross-reference for OPO classes and properties

Appendices

  1. References
  2. Changes in this version
  3. Acknowledgements

1 Introduction

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.

1.1 Terminology and notation

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.

2. OPO ontology at a glance

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,

3. OPO ontology overview

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.

opo

3.1. Example

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#>.
@prefix opo: <http://ggg.milanstankovic.org/opo/ns#>.

<http://ggg.milanstankovic.org/foaf.rdf#milstan> opo:declares :MyCurrentPresence.
:MyCurrentPresence rdf:type opo:OnlinePresence;
opo:customMessage "just watching the game, having a bud";
opo:avatar <http://www.milanstankovic.org/img/malaSlika.jpg>;
opo:hasPresenceComponent :MyOnlineStatus, opo:AllNotificationsPass, opo:PubliclyFindable.

:MyOnlineStatus rdf:type opo:OnlineStatus;
opo:hasStatusComponent opo:Active, opo:Available, opo:Visible, opo:FreelyContactable.

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.

4. Cross-reference for OPO classes and properties

Class: opo:Activity

URI: http://ggg.milanstankovic.org/opo/ns#Activity

Activity - OnlineStatusComponent used to represent the state of Activity of the Agent (e.g., Active, Inactive, ProlongedInactive).

sub-class-of:
opo:OnlineStatusComponent
in-domain-of:
opo:inactivityPeriod

[back to top]

Class: opo:Contactability

URI: http://ggg.milanstankovic.org/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.

sub-class-of:
opo:OnlineStatusComponent

[back to top]

Class: opo:Disturbability

URI: http://ggg.milanstankovic.org/opo/ns#Disturbability

Disturbability - OnlineStatusComponent used to represent the wish of an Agent to be or not to be disturbed.

sub-class-of:
opo:OnlineStatusComponent

[back to top]

Class: opo:Findability

URI: http://ggg.milanstankovic.org/opo/ns#Findability

Findability - The OnlinePresenceComponent used to represent the possibility to find contact details of an Agent in a public listing

sub-class-of:
opo:OnlinePresenceComponent

[back to top]

Class: opo:Notifiability

URI: http://ggg.milanstankovic.org/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.

sub-class-of:
opo:OnlinePresenceComponent

[back to top]

Class: opo:OnlinePresence

URI: http://ggg.milanstankovic.org/opo/ns#OnlinePresence

OnlinePresence - OnlinePresence, described in termes of various OnlinePresenceComponents to represent the attitude of an Agent towards interaction with other Agents and Applications.

sub-class-of:
owl:Thing
in-domain-of:
opo:avatar
opo:declaredBy
opo:declaredOn
opo:hasPresenceComponent
opo:customMessage
opo:duration
opo:startTime
in-range-of:
opo:IsPresenceComponentOf
opo:declaresOnlinePresence

[back to top]

Class: opo:OnlinePresenceComponent

URI: http://ggg.milanstankovic.org/opo/ns#OnlinePresenceComponent

OnlinePresenceComponent - A component of OnlinePresence used to represent one of its dimensions.

sub-class-of:
owl:Thing
in-domain-of:
opo:IsPresenceComponentOf
in-range-of:
opo:hasPresenceComponent

[back to top]

Class: opo:OnlineStatus

URI: http://ggg.milanstankovic.org/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.

sub-class-of:
opo:OnlinePresenceComponent
in-domain-of:
opo:hasStatusComponent
opo:onlineStatusName
in-range-of:
opo:isStatusComponentOf

[back to top]

Class: opo:OnlineStatusComponent

URI: http://ggg.milanstankovic.org/opo/ns#OnlineStatusComponent

OnlineStatusComponent - The component of the OnlineStatus representing one of its dimensions.

sub-class-of:
owl:Thing
in-domain-of:
opo:isStatusComponentOf
in-range-of:
opo:hasStatusComponent

[back to top]

Class: opo:Visibility

URI: http://ggg.milanstankovic.org/opo/ns#Visibility

Visibility - OnlineStatusComponent used to represent the possiblity of others to the OnlineStatus of the Agent

sub-class-of:
opo:OnlineStatusComponent

[back to top]

Property: opo:IsPresenceComponentOf

URI: http://ggg.milanstankovic.org/opo/ns#IsPresenceComponentOf

isPresenceComponentOf - The OnlinePresence that has this OnlinePresenceComponent

OWL Type:
ObjectProperty
Domain:
opo:OnlinePresenceComponent
Range:
opo:OnlinePresence

[back to top]

Property: opo:avatar

URI: http://ggg.milanstankovic.org/opo/ns#avatar

avatar - The graphical representation of the Agent used to depict him in online systems.

OWL Type:
ObjectProperty
Domain:
opo:OnlinePresence
Range:
foaf:Image

[back to top]

Property: opo:customMessage

URI: http://ggg.milanstankovic.org/opo/ns#customMessage

customTitle - A message associated with the OnlinePresence, often used in chat programs and social networks as custom title

OWL Type:
DatatypeProperty
Domain:
opo:OnlinePresence
Range:
xsd:string

[back to top]

Property: opo:declaredBy

URI: http://ggg.milanstankovic.org/opo/ns#declaredBy

delaredBy - The Agent that declared the OnlinePresence

OWL Type:
ObjectProperty
Domain:
opo:OnlinePresence
Range:
foaf:Agent

[back to top]

Property: opo:declaredOn

URI: http://ggg.milanstankovic.org/opo/ns#declaredOn

declaredOn - The OnlineAccount where the OnlinePResence was declared.

OWL Type:
ObjectProperty
Domain:
opo:OnlinePresence
Range:
foaf:OnlineAccount

[back to top]

Property: opo:declaresOnlinePresence

URI: http://ggg.milanstankovic.org/opo/ns#declaresOnlinePresence

declaresOnlinePresence - The OnlinePresence delcared by the Agent

Inverse:
opo:declaredBy
OWL Type:
ObjectProperty
Domain:
foaf:Agent
Range:
opo:OnlinePresence

[back to top]

Property: opo:duration

URI: http://ggg.milanstankovic.org/opo/ns#duration

duration - The estimated duration of the OnlinePresence after the startTime

OWL Type:
DatatypeProperty
Domain:
opo:OnlinePresence
Range:
xsd:duration

[back to top]

Property: opo:hasPresenceComponent

URI: http://ggg.milanstankovic.org/opo/ns#hasPresenceComponent

hasOnlinePresence - OnlinePresenceComponent incuded in this OnlinePresence

Inverse:
opo:IsPresenceComponentOf
OWL Type:
ObjectProperty
Domain:
opo:OnlinePresence
Range:
opo:OnlinePresenceComponent

[back to top]

Property: opo:hasStatusComponent

URI: http://ggg.milanstankovic.org/opo/ns#hasStatusComponent

hasStatusComponent - OnlineStatusComponent included in this OnlineStatus

Inverse:
opo:isStatusComponentOf
OWL Type:
ObjectProperty
Domain:
opo:OnlineStatus
Range:
opo:OnlineStatusComponent

[back to top]

Property: opo:inactivityPeriod

URI: http://ggg.milanstankovic.org/opo/ns#inactivityPeriod

inactivityPeriod - Period of inactivity on a certain service

OWL Type:
DatatypeProperty
Domain:
opo:Activity
Range:
xsd:duration

[back to top]

Property: opo:isStatusComponentOf

URI: http://ggg.milanstankovic.org/opo/ns#isStatusComponentOf

isStatusComponentOf - The OnlineStatus that includes this OnlineStatusComponent.

OWL Type:
ObjectProperty
Domain:
opo:OnlineStatusComponent
Range:
opo:OnlineStatus

[back to top]

Property: opo:onlineStatusName

URI: http://ggg.milanstankovic.org/opo/ns#onlineStatusName

OnlineStatusName - A name used by chat systems to distinguish their various statuses.

OWL Type:
DatatypeProperty
Domain:
opo:OnlineStatus
Range:
xsd:string

[back to top]

Property: opo:startTime

URI: http://ggg.milanstankovic.org/opo/ns#startTime

startTime - The time when the OnlinePresence started

OWL Type:
DatatypeProperty
Domain:
opo:OnlinePresence
Range:
xsd:dateTime

[back to top]

Instance: opo:Active

URI: http://ggg.milanstankovic.org/opo/ns#Active

Active - The Agent is active on the system.

RDF Type:
opo:Activity

[back to top]

Instance: opo:AllNotificationsPass

URI: http://ggg.milanstankovic.org/opo/ns#AllNotificationsPass

AllNotificationsPass - Agent can receive notifications from applications

RDF Type:
opo:Notifiability

[back to top]

Instance: opo:Available

URI: http://ggg.milanstankovic.org/opo/ns#Available

Available - The agent is not busy and therefore available for contatc by other Agents.

RDF Type:
opo:Disturbability

[back to top]

Instance: opo:ConstrainedContactability

URI: http://ggg.milanstankovic.org/opo/ns#ConstrainedContactability

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).

RDF Type:
opo:Contactability

[back to top]

Instance: opo:ConstrainedFindability

URI: http://ggg.milanstankovic.org/opo/ns#ConstrainedFindability

ConstrainedFindability - The Agent's contact details cannot be found by anyone on the Web, but the findability is controled by some rules/policies.

RDF Type:
opo:Findability

[back to top]

Instance: opo:DoNotDistrub

URI: http://ggg.milanstankovic.org/opo/ns#DoNotDistrub

DoNotDisturb - The Agent is busy and does not want to be contacted by other Agents.

RDF Type:
opo:Disturbability

[back to top]

Instance: opo:FreelyContactable

URI: http://ggg.milanstankovic.org/opo/ns#FreelyContactable

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.

RDF Type:
opo:Contactability

[back to top]

Instance: opo:Inactive

URI: http://ggg.milanstankovic.org/opo/ns#Inactive

Inactive - The Agent is inactive for at least 5 min.

RDF Type:
opo:Activity

[back to top]

Instance: opo:Invisible

URI: http://ggg.milanstankovic.org/opo/ns#Invisible

Invisible - The Agent's OnlineStatus is not visible to other Agents

RDF Type:
opo:Visibility

[back to top]

Instance: opo:NotificationsConstrained

URI: http://ggg.milanstankovic.org/opo/ns#NotificationsConstrained

NotificationsConstrained - The acceptance of notifications from applications is somehow constrained (by using some rules or policies).

RDF Type:
opo:Notifiability

[back to top]

Instance: opo:NotificationsProhibited

URI: http://ggg.milanstankovic.org/opo/ns#NotificationsProhibited

NotificationsProhibited - Agent cannot receive any notification form applications

RDF Type:
opo:Notifiability

[back to top]

Instance: opo:ProlongedInactive

URI: http://ggg.milanstankovic.org/opo/ns#ProlongedInactive

ProlongedInactive - The Agent is inactive for at least 20 min.

RDF Type:
opo:Activity

[back to top]

Instance: opo:PubliclyFindable

URI: http://ggg.milanstankovic.org/opo/ns#PubliclyFindable

PubliclyFindable - The Agent's contact details canbe found by anyone on the Web

RDF Type:
opo:Findability

[back to top]

Instance: opo:Visible

URI: http://ggg.milanstankovic.org/opo/ns#Visible

Visible - The Agent's OnlineStatus is visible to other Agents

RDF Type:
opo:Visibility

[back to top]

A References

 

B Changes in this version

C Acknowledgements

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.