[okfn-dev] Design question for SNA tool "grano"

Friedrich Lindenberg friedrich.lindenberg at okfn.org
Wed Jan 18 19:21:22 UTC 2012

Hi all,

[[Rufus mentioned that he's considering to rename this list okfn-labs
to discuss more random OKF hackyness. In this spirit, here is a
brutally off topic discussion:]]

I've recently begun hacking on Grano, a web-based social network
analysis tool [1]. In Grano, there are three key domain objects:
Network, Entity and Relation (i.e. Graph, Node, Edge). Both entities
and relations can be typed, which means there is a dynamically
generated, joined table that has a certain schema (e.g. [2]),
extending the core properties of a thing or link. The idea of a
network is to partition the graph with access control, e.g. a reporter
could make a network and store actors in a story, then later share it.

Now the questions are:

* are schemas per-network or global? The global option allows you to
merge networks more easily, but also means you have a namespace that
can get polluted (maybe the first person to define "Person" as a
schema type is doing this for a very specific use case). In the end,
when you do global schemas you end up being somewhat more like the
linked data idea of common ontologies, and I'm not sure that's a good

* same for entities and relations: they do have "root tables", i.e.
"entity" and "relation". Should these also be name-spaced per network
in separate tables (like openspending entries)? At the moment, the
requirement for all relations to remain within the graph is just
enforced in validation, and that's also nice (in the same way it was
nice in OS, which went horribly wrong - but here it may actually be
the point).


 - Friedrich

[1] http://github.com/pudo/grano - README may be helpful. In general,
this is probably just a dummy prototype, but still: it may go
[2] https://github.com/pudo/grano/blob/master/grano/test/helpers.py

More information about the okfn-labs mailing list