Description de l’ontologie
Figure 1 : Online Presence Ontologie [1]
Objectif
Online Presence Ontology (OPO) est une ontologie représentant la présence en ligne [1]. Son objectif est de modéliser les différents aspects dynamiques de la présence en ligne d’un utilisateur sur les réseaux sociaux et les services de messagerie instantanée. Elle permet de décrire par exemple les activités, statuts, messages personnels, etc.
OPO utilise d’autres ontologies afin de décrire les profils des utilisateurs : Friend Of A Friend (FOAF) et Semantically-Interlinked Online Communities (SIOC). Notons qu’il faut bien faire la différence entre les propriétés des utilisateurs en ligne modélisées par FOAF qui sont statiques, telles que le nom, le sexe, etc., et les propriétés modélisées par OPO qui sont dynamiques, comme le statut (occupé, absent, en ligne) ou les activités courantes par exemple.
Code source : analyse de la syntaxe
Description générale de l’ontologie
Cette ontologie est décrite grâce au langage OWL (Web Ontology Language) et au framework RDF (Resource Description Framework). Son namespace est disponible à l’adresse suivante : http://online-presence.net/opo/ns#.
Une telle ontologie est décrite grâce à 3 types d’éléments, comme expliqué dans les tutoriels [3] et [4], qui seront définis dans la suite de ce document :
- les classes
- les individus
- et les propriétés.
Diagramme de classe
Nous avons réalisé une représentation du diagramme de classe de l’ontologie OPO grâce à l’outil Protégé, représenté sur la figure 2 ci-dessous. Les flèches droites bleues signifient “has subclass”.
Figure 2 : Diagramme de classe de l’OPO réalisé avec l’outil Protégé
Classes principales
Description
Les classes principales de l’ontologie OPO représentées sur le diagramme de classe précédent (figure 2), sont les suivantes.
Agent
L’agent représente l’utilisateur décrit par l’ontologie Online Presence. Il est défini dans une autre ontologie, Friend Of A Friend.
OnlinePresence
C’est la classe principale de l’OPO. Elle décrit le comportement d’un agent vis-à-vis des autres agents et applications. Cette attitude est représentée grâce à différents OnlinePresenceComponents.
OnlinePresenceComponent
Cette classe est utilisée pour représenter une des dimensions de la présence en ligne d’un agent. Ses sous-classes sont les suivantes : Findability, Notifiability et OnlineStatus.
Findability
Sous-classe de OnlinePresenceComponents, cette classe est utilisée pour représenter la possibilité de trouver les détails de contact d’un agent dans une liste publique. Ces contacts peuvent être accessibles par tous sur le Web ou sous certaines conditions.
Notifiability
Autre composant de la présence en ligne (sous-classe de OnlinePresenceComponents), Notifiability est utilisé pour représenter l’attitude d’un agent concernant son interaction avec les applications, comme par exemple la possibilité d’afficher toutes les notifications, certaines notifications (selon des règles prédéfinies) ou de n’afficher aucune notification.
OnlineStatus
Cette classe décrit le comportement d’un agent concernant la possibilité de communication avec les autres agents. Le statut en ligne est défini par différents composants, sous-classes de OnlineStatusComponent.
OnlineStatusComponent
Cette classe est utilisée pour représenter une des dimensions du statut en ligne d’un utilisateur. Ses sous-classes sont les suivantes : Contactability, Visibility, Disturbability et Activity.
Contactability
Sous-classe de OnlineStatusComponent, cette classe est utilisée pour représenter la joignabilité d’un agent, c’est-à-dire la façon dont il est joignable. Contactibility décrit la possibilité pour les autres agents de contacter le premier agent librement ou sous certaines conditions.
Visibility
Autre composant du statut en ligne, Visibility permet de représenter la possibilité pour les autres de voir le statut en ligne de l’agent qui peut être visible ou invisible.
Disturbability
Sous-classe de OnlineStatusComponent, cette classe est utilisée pour représenter la volonté d’un agent d’être ou non dérangé. Un utilisateur peut être en mode “Disponible” ou “Ne pas déranger”.
Activity
Dernier composant du statut en ligne, Activity représente l’état de l’activité de l’agent, comme par exemple actif, inactif ou inactivité prolongée.
Action
Cette classe représente l’action en cours réalisée par l’agent. Une action peut être écouter de la musique ou lire un livre par exemple.
Exemple de syntaxe
Les classes fournissent des abstractions pour des ensembles de ressources ayant des caractéristiques similaires. Chaque classe OWL est associée à un ensemble d’“individuals” appelés extension de classe [3]. Une définition de classe décrit une classe OWL, soit par un nom de classe ou en spécifiant l’extension de classe d’une classe anonyme.
Prenons l’exemple de la définition de la classe OnlinePresence.
Définition de la classe - Online Presence - avec son URI
<owl:Class rdf:about="http://online-presence.net/opo/ns#OnlinePresence">
<rdfs:label xml:lang="en">OnlinePresence</rdfs:label>
Définition de la classe dont hérite la classe courante - Thing
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
Définition de la sous-classe Findability
<rdfs:subClassOf>
Décrit une classe anonyme
<owl:Restriction>
Propriété de la sous-classe Findability - hasStatusComponent
<owl:onProperty rdf:resource="http://online-presence.net/opo/ns#hasStatusComponent"/>
<owl2:onClass rdf:resource="http://online-presence.net/opo/ns#Findability"/>
<owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:maxCardinality>
</owl:Restriction>
</rdfs:subClassOf>
Définition de la sous-classe Notifiability
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://online-presence.net/opo/ns#hasStatusComponent"/>
<owl2:onClass rdf:resource="http://online-presence.net/opo/ns#Notifiability"/>
<owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:maxCardinality>
</owl:Restriction>
</rdfs:subClassOf>
Définition de la sous-classe OnlineStatus
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://online-presence.net/opo/ns#hasStatusComponent"/>
<owl2:onClass rdf:resource="http://online-presence.net/opo/ns#OnlineStatus"/>
<owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:maxCardinality>
</owl:Restriction>
</rdfs:subClassOf>
Définition des classes disjointes (classes n’ayant aucun individu commun avec la classe courante) - OnlinePresenceComponent, Action et SourceOfPublishing
<owl:disjointWith rdf:resource="http://online-presence.net/opo/ns#OnlinePresenceComponent"/>
<owl:disjointWith rdf:resource="http://online-presence.net/opo/ns#Action"/>
<owl:disjointWith rdf:resource="http://online-presence.net/opo/ns#SourceOfPublishing"/>
<rdfs:isDefinedBy rdf:resource="http://online-presence.net/opo/ns#"/>
Commentaire associé à la classe décrivant son rôle
<rdfs:comment xml:lang="en">
OnlinePresence, described in termes of various OnlinePresenceComponents to represent the attitude of an Agent towards interaction with other Agents and Applications.
</rdfs:comment>
</owl:Class>
Individus
Les individuals (individus) sont les instances des classes et sous-classes définies dans l’ontologie. Par exemple, les individus de la classe Notifiability sont : AllNotificationsPass, NotificationsContrained et NotificationsProhibited. Un exemple de syntaxe d’individu est donné ci-dessous, pour AllNotificationsPass.
<Notifiability rdf:about="http://online-presence.net/opo/ns#AllNotificationsPass">
<rdfs:label xml:lang="en">AllNotificationsPass</rdfs:label>
<rdfs:isDefinedBy rdf:resource="http://online-presence.net/opo/ns#"/>
<rdfs:comment xml:lang="en">Agent can receive notifications from applications</rdfs:comment>
</Notifiability>
Propriétés
Les individus sont liés par des propriétés. Il existe deux types de propriétés :
- les object properties qui lient les individus de deux classes
- et les datatype properties qui lient les individus de classes à des valeurs littérales.
Un exemple de syntaxe de propriété d’objet est donné ci-après pour la propriété currentAction, qui est l’action qu’est en train de réaliser l’agent.
<owl:ObjectProperty rdf:about="http://online-presence.net/opo/ns#currentAction">
<rdfs:label xml:lang="en">currentAction</rdfs:label>
<rdfs:isDefinedBy rdf:resource="http://online-presence.net/opo/ns#"/>
<rdfs:comment xml:lang="en">Current action performed by the Agent</rdfs:comment>
<rdfs:domain rdf:resource="http://online-presence.net/opo/ns#OnlinePresence"/>
<rdfs:range rdf:resource="http://online-presence.net/opo/ns#Action"/>
</owl:ObjectProperty>
Un exemple de syntaxe de propriété de données est donné ci-après pour la propriété inactivityPeriod, qui représente la période d’inactivité de l’agent sur un certain service.
<owl:DatatypeProperty rdf:about="http://online-presence.net/opo/ns#inactivityPeriod">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:label xml:lang="en">inactivityPeriod</rdfs:label>
<rdfs:isDefinedBy rdf:resource="http://online-presence.net/opo/ns#"/>
<rdfs:comment xml:lang="en">Period of inactivity on a certain service</rdfs:comment>
<rdfs:domain rdf:resource="http://online-presence.net/opo/ns#Activity"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#duration"/>
</owl:DatatypeProperty>
Exemple de code
Voici un exemple simple d’utilisation de l’ontologie OPO, disponible sur Wikipédia [3]. Cet exemple décrit un échange de tweets entre deux utilisateurs.
Nous pouvons tout d’abord noter l’utilisation de l’ontologie FOAF pour décrire le réseau social utilisé et les noms de comptes de nos utilisateurs.
Le premier utilisateur est “darthVader”. Il tweet un message dont les informations sont fournis dans le bout de code associé, présenté ci-dessous :
- le compte utilisé (accountName) : “darthVader”
- le contenu du message (content) : “Luke, I am your father.”
- la date (startTime) : 1er mars 2008 à 18h51
- le message (customMessage) : “darthVaderStatus”.
:darthVaderTwitterAccount rdf:type sioc:UserAccount;
foaf:accountServiceHomepage <https://www.twitter.com/>;
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.
Puis un autre utilisateur, “luck”, répond au message de “darthVader”. “Luck” se connecte à son compte et répond grâce à un tweet dont les informations sont également visibles dans le code :
- le compte utilisé (accountName) : “luke”
- le destinataire (reply_of) : “darthVaderStatus”
- le contenu du message tweeté (content) : “No… No! That’s not true! That’s impossible!”
- la date (startTime) : 1er mars 2008 à 18h51
:lukeTwitterAccount rdf:type sioc:UserAccount;
foaf:accountServiceHomepage <https://www.twitter.com/>;
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.
Bibliographie
[1] Milan Stankovic, Jelena Jovanovic et Alexandre Passant. Online Presence Homage. Disponible sur : http://online-presence.net/. Consulté le 05/02/2016
[2] Milan Stankovic et Jelena Jovanovic. 09/2009. Online Presence in Social Networks. Disponible sur : https://www.w3.org/2008/09/msnws/papers/w3c-workshop-opo.pdf. Consulté le 05/02/2016
[3] LinkedDataTools.com. Tutorial 4: Introducing RDFS & OWL. Disponible sur : http://www.linkeddatatools.com/introducing-rdfs-owl. Consulté le 05/02/2016
[4] W3C. 10/02/2004. OWL Web Ontology Language Reference. Disponible sur : https://www.w3.org/TR/owl-ref/#Syntax. Consulté le 05/02/2016
[5] Wikipédia, the free Encyclopedia. Online Presence Ontology. Disponible sur : https://en.wikipedia.org/wiki/Online_Presence_Ontology. Consulté le 05/02/2016
Chloé BROUZES
Jue WANG
Quancheng ZHAO