finally a bnode with a uri

Knowee - (The beginning of) a semantic social web address book

Knowee is a web address book that lets you integrate distributed social graph fragments. A new version is online at
Heh, this was planned as a one-week hack but somehow turned into a full re-write that took the complete December. Yesterday, I finally managed to tame the semantic bot army and today I've added a basic RDF editor. A sponsored version is now online at, a code bundle for self-hosting will be made available at tomorrow.

What is Knowee?

Knowee started as a SWEO project. Given the insane number of online social networks we all joined, together with the increasing amount of machine-readable "social data" sources, we dreamed of a distributed address book, where the owner doesn't have to manually maintain contact data, but instead simply subscribes to remote sources. The address book could then update itself automatically. And -in full SemWeb spirit- you'd get access to your consolidated social graph for re-purposing. There are several open-source projects in this area, most notably NoseRub and DiSo. Knowee is aiming at interoperability with these solutions.
knowee concept


For a webby address book, we need to pick some data formats, vocabularies, data exchange mechanisms, and the general app infrastructure:
  • PHP + MySQL: Knowee is based on the ubiquitous LAMP stack. It tries to keep things simple, you don't need system-level access for third-party components or cron jobs.
  • RDF: Knowee utilizes the Resource Description Framework. RDF gives us a very simple model (triples), lots of different formats (JSON, HTML, XML, ...), and free, low-cost extensibility.
  • FOAF, OpenSocial, microformats, Feeds: FOAF is the leading RDF vocabulary for social information. Feeds (RSS, Atom) are the lowest common denominator for exchanging non-static information. OpenSocial and microformats are more than just schemas, but the respective communities maintain very handy term sets, too. Knowee uses equivalent representations in RDF.
  • SPARQL: SPARQL is the W3C-recommended Query language and API for the Semantic Web.
  • OpenID: OpenID addresses Identity and Authentication requirements.
I'm still working on a solution for access control, the current Knowee version is limited to public data and simple, password-based access restrictions. OAuth is surely worth a look, although Knowee's use case is a little different and may be fine with just OpenID + sessions. Another option could be the impressive FOAF+SSL proposal, I'm not sure if they'll manage to provide a pure-PHP implementation for non-SSL-enabled hosts, though.

Features / Getting Started

This is a quick walk-through to introduce the current version.
Login / Signup
Log in with your (ideally non-XRDS) OpenID and pick a user name.

knowee login

Account setup
Knowee only supports a few services so far. Adding new ones is not hard, though. You can enable the SG API to auto-discover additional accounts. Hit "Proceed" when you're done.

knowee accounts

Profile setup
You can specify whether to make (parts of) your consolidated profile public or not. During the initial setup process, this screen will be almost empty, you can check back later when the semantic bots have done their job. Hit "Proceed".

knowee profile

The Dashboard shows your personal activity stream (later versions may include your contacts' activities, too), system information and a couple of shortcuts.
knowee dashboard

The contact editor is still work in progress. So far, you can filter the list, add new entries, and edit existing contacts. The RDF editor is still pretty basic (Changes will be saved to a separate RDF graph, but deleted/changed fields may re-appear after synchronization. This needs more work.) The editor is schema-based and supports the vocabularies mentioned above. You'll be able to create your own fields at some later stage.

It's already possible to import FOAF profiles. Knowee will try to consolidate imported contacts so that you can add data from multiple sources, but then edit the information via a single form. The bot processor is extensible, we'll be able to add additional consolidators at run-time, it only looks at "owl:sameAs" at the moment.
knowee contacts

Enabling the SPARQL API
In the "Settings" section you'll find a form that lets you activate a personal SPARQL API. You can enable/protect read and/or write operations. The SPARQL endpoint provides low-level access to all your data, allows you to explore your social graph, or lets you create backups of your activity stream.

knowee api knowee api

That's more or less it for this version. You can always reset or delete your account, and manually delete incorrectly monitored graphs. The system is running on the GoGrid cloud, but I'm still tuning things to let the underlying RDF CMS make better use of the multi-server setup. If things go wrong, blame me, not them. Caching is not fully in place yet, and I've limited the installation to 100 accounts. Give it a try, I'd be happy about feedback.

Comments and Trackbacks -> openid fail :(
Comment by Daniel O'Connor on 2009-01-08 08:01:33 UTC
Also: mybloglog would be a really good starting point. IE: lists loads of my accounts
Comment by Daniel O'Connor on 2009-01-08 08:03:26 UTC
Thx for the feedback, I'll fix it. And adding MyBlogLog to the supported services looks straight-forward.
Comment by Benjamin Nowack on 2009-01-08 08:21:51 UTC
When I attempt to use my yahoo OpenID at, I get the following message:

Sorry! You will not be able to login to this website as it is using an older version of the the OpenID technology. Yahoo! only supports OpenID 2.0 because it is more secure. For more information, check out the OpenID documentation at Yahoo! Developer Network.

I know that yahoo has its own problems, but is there anyway to confirm that this is an issue?

Sounds like an exciting project you got going. Looking forward to seeing more.
Comment by Scott L Holmes on 2009-01-08 10:44:42 UTC
Scott, yeah, it's a pity that Yahoo! is OpenID2-only. Knowee works with most other OpenID providers, though. The OpenID consumer in my framework will be updated at some time in the future, but it's way down on the todo list (I found OpenID 2 a bit too complex and ignored it when I implemented the consumer). I hope you can maybe find an alternative provider to test the app for the time being.
Comment by Benjamin Nowack on 2009-01-08 13:56:08 UTC
Not a problem at all. I'm much more interested in Knowee than I am in Yahoo OpenID. So take your time. I'll find another provider. Gonna attempt to get a Knowee server up and running but it will need to wait until the weekend.
Comment by Scott L Holmes on 2009-01-08 14:04:20 UTC
Might consider php-openid rather then using your own consumer. Haven't used the PHP version but have used the Python one extensively, works rather well.
Comment by Gavin Carothers on 2009-01-09 19:22:23 UTC
Gavin, thx for the pointer, will check it out. It may be possible to upgrade my consumer, too. It just wasn't necessary until now.
Comment by Benjamin Nowack on 2009-01-10 12:18:21 UTC
I'm no tech person but I was just thinking about something like this last night.

I'm tired of all the various self-contained social networks, and with the burst of interest in Google Wave, I was momentarily excited at the prospect of an internet standard that would cover some of the aspects that make Facebook et al. popular.

Then I realized one of the big draws of Facebook is that it's basically a shared addressbook, and realized that if something like Google Wave utilized an OpenID-based social address book solution, then you could just "add people you know" and never have to worry about keeping their contact details up to date, same as with a social network.

I'm hopeful for the future... And the advances that social networking has brought falling out of the hands of any one popular network/company, and into commodity internet standards.
Comment by Adam on 2009-06-11 17:56:25 UTC
1 comment is currently in the approval queue.

Comments are disabled for this post.

Earlier Posts


No Posts found