Entity Relationship and PagesPlus

Yes, I do understand that yesterday post was a little cryptic. 😉

At evectors we are working on a new component of the PagesPlus architecture designed to manage entities and relationship.

It all started by observing the flexibility of PagesPlus, which allows us to manage flows of content using different layers of tagging and plain queries to our aggregator and render the results on pages or widgets trough a templating mechanism.

Since most of the sites we design these days are built not only around content but also other types of elements (users, groups, products, companies, etc.), we started trying to figure out a model as simple as the aggregator to manage other types of data.

So, we invented the Entity-Relationship model (only to discover that somebody had already invented it much earlier) and we started building an engine which could manage in the most neutral way entities, relationship between entities and tags and make them available to our WYSIWYG page layout tools.

With this component (which we call Erm) we can define an entity and tag it as “user” and then define a relationship and tag it as “friend of”. But we can also create entities tagged “brand”, “company”, “product”, “group”, ect. or  relationships tagged “fan of”, employee of”, “owner of”, “belongs to”, etc, allowing us to define a lot of different sentences. Different types of entity can be linked to additional attributes, hosted either in our own databases or on some external service reachable trough an API, making the whole environment very scalable.

While developing these new components, we are also building a couple of real sites for real clients using this new approach (this is helping us keeping everything real and provides some very serious deadlines).

Yesterday’s video was displaying the tool which allows to create a query to the Entity Relationship Management engine (i.e.: find 10 entities of type user which have a relationship with this brand, sort them alphabetically and display their names and avatars) and render the result on a page.

One comment