Dans un article très intéressant, Trygve Reenskaug and James O. Coplien propose un autre modèle d'architecture en alternative au très usé et très malmené modèle MVC (modèle, vue, contrôleur). Ce modèle se nomme DCI. D pour données, C pour contexte, I pour interactions. L'idée est de dire qu'un objet représentant une donnée n'a pas en soit à avoir de comportement évolué. Il doit être uniquement capable de présenter son état et de lui appliquer des modifications basiques. La plupart des modifications (ou interactions) avec ces objets dépendent alors de ce que l'on veut en faire, et n'ont pas nécessairement à être attachées à l'objet, elles dépendent du contexte dans le quel on se trouve.
Si l'on regarde dans les langages existants, ce modèle fait penser à la différentiation Entitée / Session que l'on retrouve dans les java beans, ou de manière plus simple et intuitive, à la notion de traits qui sont très à la mode actuellement dans les langages de programmation.
Maintenant, gardez tout cela dans un coin de votre tête et allons voir ce qui se passe du coté du web sémantique. Nous avons un ensemble d'informations sur des identifiants. Cet ensemble d'informations peut être vu comme un amas difforme, difficile à manipuler avec un haut niveau d'abstraction. On peut alors compter sur les ontologies pour regarder cet amas d'information différemment. L'ontologie permet de s'assurer que l'ensemble d'information que je détiens me permet de manipuler un objet plus clairement défini. Les ontologies définissent quelles informations sont disponibles, pas comment les modifier.
Revenons un instant à l'architecture DCI, le web sémantique, à travers les ontologies, me fournit des données qui correspondent exactement aux données du modèle DCI. Reste alors à définir, en fonction du contexte, quelles interactions sont possibles pour nos objets. Là, à ma connaissance, la galaxie de spécifications du web sémantique n'apporte pas de réponse, du moins pas de réponse autre que l'utilisation de ces objets dans un langage classique via un ORM. Par contre, l'utilisation du web sémantique et des ontologies permettrait encore une clarification à la correspondance entre données stockées et données représentées. En effet, dans la proposition de Reenskaug et Coplien, le contexte n'a d'impact que sur la façon dont on manipule les objets. Or, en fonction du contexte, la façon dont on voit les objets est également différente. Ainsi, en partant de mon ensemble de données brutes, je dois pouvoir, en fonction du contexte, choisir non seulement les interactions que je souhaite pour mes objets, mais également la représentation que je me faits de ceux ci.
J'essaierai d'illustrer cela prochainement, pour l'instant le temps manque.