Tuesday, November 11, 2008

Global Social Graph

Global Social Graph is not a brand new idea, several blogs and articles around social networking and related solutions agree that OpenID and Social Networks are quickly converging. The picture below shows the Asemantics vision of this synergy.



What I'm going to describe is a three level abstract architecture.

At top level we find Social Networks. Some of these, with the promotion of Google, are standardizing their own API to expose contents and services. This standardization is known as Open Social API.

Although this common API, people graphs remain partitioned among different social sites.
The complex of social graphs among social sites is what we call Global Social Site.

At bottom level we find a set of users connected together in real life through relations like friendship or work. These people would like to see the set of relationship they own across several social sites as a unique, harmonized graph;
this is the goal of middle level.

Middle level, what we say Global Social Aggregator is able to access content of social sites using generic adapters, like Open Social Adapter, or specific adapters, written to deal with service specific APIs. Access to users data for any network is granted by OpenID common identity or specific sign-on methods. Collected data is then mashed up by a layer called Global Social API, which provides an abstract interface on social relations. Access to social data is then filtered by the Profile Filter, allowing users to define restricted visibility to their resources. The returned graph is finally converted in one of available formats like FOAF, XNF, JSON or even exposed with an Open Social API built on top of it.

Consumers of Middle level are Social Consumers, i.e. anybody having a digital identity in a social network accessible through an OpenID. Social Consumers use Social browsers to access graph data. A social browser is any instrument, being it a service or a desktop application, able to support at least one of the formats provided by converters in middle tier.

Thursday, November 6, 2008

The OpenPlatform Vision

Asemantics is the major implementor of OpenID related technologies in Italian IT scenario.
We have been implemented both Providers and Relying Party solutions.

Company experience can be reassumed in a general architecture that we call OpenPlatform.



The system front-end is load balancer, (usually hardware), distributing
requests on a battery of J2EE Web Containers.
Every Web container is accessed through an Apache Server 2.x used to perform URL rewriting, resource access restrictions and HTTPS support.

Web containers hosts both presentation and REST services.
Presentation layer is based on JSTL solutions. We don't use specific J2EE frameworks, with the exception of an IoC (Inversion of Control) support based on Google Guice.
DAO (Database Access Object) objects are written with iBATIS.

Business Tier lays on persistence and connector layers.

Persistence layers is divided in:

  • Storage persistent infrastructure;

  • Memory persistent infrastructure.


Storage persistent infrastructure is based on MySQL master-slave replication and is intended to maintain persistent data like User profiles, preferences logs and related.

Memory persihttp://www.blogger.com/img/blank.gifstent infrastructure is based on a Memcached server used to share user session data across Web Containers.

Connector layers provide access to:

  • Legacy SSO (Single Sign On) systems;

  • Social Networks.


Access to Social Networks is done with Open Social and Social Graph API.
Retrieval of social relations is used to generate FOAF (Friend Of A Friend) profiles exposed in Identity Pages and include user related widgets. With Open Social API
the Identity Page is enabled to work as an Open Social Container.

All the visible attributes of User profile are represented inside Itentity Page with
specific Microformats.

Platform allows an high configurability for Provider users.



The main use case allows user to aithenticate to a Relying Party, this can be done by chosing among several defined profiles.
Every profile maintains different attribute data.
User can modify visibility of attributes shown in Identity Page, visualize and modify preferences about Relying Party access and list access log activities.