woensdag 11 november 2009

OO versus ontologies

In een eerdere blogpost, "Representatie van context", werd reeds aangegeven dat voor het voorstellen van de context zou gekozen worden tussen een object-geöriënteerd model en het gebruik van ontologies. Over beide technologieën is heel wat informatie in de literatuur verschenen; er zijn ook een aantal systemen mee geïmplementeerd. In deze blogpost zetten we voor- en nadelen van beide op een rijtje, en geven we argumenten voor onze uiteindelijke keuze.

Het gebruik van een object-geöriënteerd model heeft als voordeel dat het een lage instapdrempel heeft. We zijn immers vertrouwd met de aspecten van het OO-programmeren. Er zijn ook verschillende systemen ontwikkeld die het context-awareness-probleem op een OO-manier tackelen: Context Toolkit, Active Badge System, Intelligent Room, GUIDE.

Het grootste probleem met dergelijke systemen is dat ze de context-informatie embedden in programma-objecten (bijvoorbeeld Java-klassen), die typisch inadequaat zijn voor het toepassen van operaties die kennis delen of data samenbrengen. "Knowledge sharing" en "reasoning" zijn nochtans erg belangrijke aspecten voor een systeem dat in een open en dynamische omgeving moet werken.

Zoals aangegeven in een eerdere blogpost, mag er bij een dynamisch context-aware systeem niet vanuit worden gegaan dat de data die wordt verkregen uit hardwaresensoren altijd correct is. Bovendien kunnen bepaalde sensoren op bepaalde momenten niet beschikbaar zijn. Er kunnen dus inconsistenties ontstaan. Wanneer gewone programma-objecten worden gebruikt om de context-data voor te stellen, kunnen deze inconsistenties niet opgespoord worden - laat staan opgelost. Met ontologies is het wel mogelijk om te redeneren over de context. Zo kan informatie uit twee ontologies worden samengebracht, kunnen inconsistentie en redundantie worden opgespoord, ...

Heel wat van de aangehaalde implementaties die op een object-geöriënteeerde manier met context omgaan maken gebruik van locatie-informatie om het gedrag van het systeem aan te passen. Geen enkele van de implementaties heeft echter gebruik gemaakt van de voordelen die semantieken van spatiale relaties bieden bij het redeneren over context. Bijvoorbeeld: als persoon A zich op locatie X bevindt, en persoon B bevindt zich op locatie X, dan kan hieruit afgeleid worden dat persoon A en persoon B zich bij elkaar bevinden.

Om op een optimale manier gebruik te maken van de context-awareness, moeten de verschillende entiteiten van het systeem een gemeenschappelijk idee over de context hebben. Hiertoe moeten ze informatie uitwisselen. Wanneer gebruik gemaakt wordt van programmeertaal-objecten om context voor te stellen, moet er een laag-niveau implementatie-afspraak zijn tussen twee programma's die informatie delen. Dit is niet haalbaar in een open en dynamische omgeving. Wanneer de verschillende entiteiten gebruik maken van eenzelfde ontologie om hun kennis voor te stellen, maakt het niet uit op welke manier die entiteiten geïmplementeerd zijn.

De voordelen van het gebruik van ontologies kunnen dus als volgt worden samengevat:
  • een 'common' ontology maakt het mogelijk om kennis te delen in een open en dynamisch (gedistribueerd) systeem,
  • ontologies met goed gedefinieerde declaratieve semantieken maken het mogelijk dat intelligente agents redeneren over context-informatie,
  • ontologies maken het mogelijk dat devices en agents die niet expliciet ontworpen zijn om samen te werken, dat toch kunnen doen.
Ontologies bieden de noodzakelijke elementen om de omgeving en contexten in 'human-readable' en 'machine-processable' manier te beschrijven. Ze bieden bovendien de mogelijkheid om zeer expressief te zijn, laten toe om hiërarchische context-modellen op te bouwen en zijn tot op een hoog niveau geformaliseerd.

Uit bovenstaande argumentatie blijkt waarom we ervoor gekozen hebben om de context-informatie met behulp van ontologies voor te stellen. Het systeem waarmee we werken is duidelijk erg dynamisch: er kunnen services worden toegevoegd en verwijderd, de service-compositie moet aangepast worden naargelang de context, ... Als we teruggrijpen naar de opgestelde requirements zien we dat een nieuw toegevoegd apparaat automatisch moet toegevoegd worden aan het systeem, zonder tussenkomst van de gebruiker. Het apparaat moet dus op een voldoende expressieve manier kunnen voorstellen wat de aangeboden services zijn. Bovendien zullen er conflicten moeten opgelost worden: wat als twee gebruikers met een verschillende muzieksmaak zich in dezelfde ruimte bevinden? Het lijkt ons dat ontologies de nodige bagage zullen leveren op de gestelde problemen op te lossen.

We kunnen nu op zoek gaan naar bestaande context-representatiemechanismen die gebruik maken van ontologies. Het is waarschijnlijk niet nuttig om een compleet nieuwe ontology 'from scratch' te schrijven: ten eerste zou dit een overhead aan design en engineering vragen, en bovendien verlaagt dit de samenwerking met reeds bestaande ontologies. Het is een utopie een ontology te vinden die op maat gemaakt is voor ons systeem, maar waarschijnlijk kunnen we wel een aantal elementen uit bestaande ontologies overnemen.

Deze blogpost brengt informatie samen uit de volgende papers:

[1] Cheverst et al. - Design of an object model for a context sensitive tourist GUIDE

[2] Schmidt et al. - There is more to context than location
[3] Dey - Understanding and using context
[4] Chen et al. - The SOUPA Ontology for Pervasive Computing
[5] De Paoli en Loregian - Context-Aware Applications with Distributed Ontologies
[6] Kagal et al. - Centaurus: A Framework for Intelligent Services in a Mobile Environment
[7] Chen et al. - An Ontology for Context-Aware Pervasive Computing Environments
[8] Ejigu et al. - An ontology-based approach to context modeling and reasoning in pervasive computing

Geen opmerkingen:

Een reactie posten