Freebase: Life, the Universe, and Everything

Just after my post Freebase as productive playground, I recieved an invite (thanks a lot, Ken!) and I have played around a little…

Now, a lot of relevant things have been said around the ‘net (see my prevous post). And, there have been some in-depth reviews of the model of Freebase, related to the Semantic Web: Denny Vrandecic, Danny Ayers.

I will not repeat these comments here, rathter give my first impressions as a curious explorer.

First of all, the Freebase website is very heavy on Ajax, which seems to be almost essential for the functionality provided.
As a novice user, you are launched at the “User Profile” page. While starting to fill out some profile fields, you are immediately confronted with the Metaweb Object Model (login needed).

The Freebase Object Model

The model roughly consists of:

  • Domain (the top level ontology, e.g. ‘music‘ or ‘business‘)
  • Type (a class within a domain, e.g. music/artist)
  • Topic (an individual object, let’s say Frank Zappa as musical artist)
  • Property (attributes, e.g. ‘name’ or ‘date of birth’, or a relation with another Topic)

So when you start editing your User Profile, you are actually filling out a template of a User Type. Within this type, the attribute “Me as a Freebase Topic” links to an object of class (Type) ‘people/person‘. The distinction is somewhat like the difference between a real world (verifyable) person, and personas this person might use. From the Freebase documentation:

A person topic is distinct from a user in Metaweb. Users have profiles that can only be edited by the users themselves. A person topic can be edited by anyone and is intended as a factual representation of details about a person.

A couple of primitive Types exist (e.g. type/intor type/text), but in most cases more complex types are used for attributes. So Place of Birth is not just a text sctring, but an object of type ‘location/location‘. This ensures that all occurrences of ‘Baltimore, Maryland‘ refer to the same object.

Following the link to this location, you can zoom in further and find that the object is not only of type ‘location/location‘, but also ‘location/citytown‘ and ‘location/us_county‘.

Queries and results

Freebase is called a database for a reason: you can run queries against it and get results back. Now being heavily rooted in the semantic web terminology, you might expect to use SPARQL as a query language, and results back in some RDF representation. But this is not the case.

Both queries and results are expressed in plain JSON, which is becoming the data transport protocol of choice for most Ajax projects and frameworks.

A trivial example of using this Metabase Query Language.

Query:

{
  "qname": {
    "query":{
      "type" : "/music/artist",
      "name" : "Frank Zappa",
      "album" : {
        "name" : "Hot Rats",
        "track" : []
      }
    }
  }
}

Response:

 ({
  "status": "200 OK",
  "qname": {
    "status": "/mql/status/ok",
    "result": {
      "album": {
        "track": [
          "Peaches en Regalia",
          "Willie the Pimp",
          "Son of Mr. Green Genes",
          "Little Umbrellas",
          "The Gumbo Variations",
          "It Must Be a Camel"
        ],
        "name": "Hot Rats"
      },
      "type": "/music/artist",
      "name": "Frank Zappa"
    }
  }
})

This makes building a front end web application for Freebase almost trivial!

API: full CRUD interface

The API doesn’t stop at letting you query the existing Freebase data. You can Create, Read, Update or Delete objects all through the JSON API, as long as you have sufficient permissions to do so.

This means that you can soon start using Freebase as an alternative for you own, isolated database for your web applications. And so make the world a better place by sharing all data you and your users enter through your application. And, of course, benefit from the data which is already in Freebase. The only consideration is the license: all data in Freebase is available under the Creative Commons Attribution license (CC-BY).

All this functionality can be vulnerable to spamming or vandalizing, just like Wikipedia content. The Freebase folks have clearly thought about this problem. They provide a granular permission mechanism, as well as community vigilance tools like “report as spam” links and “revert” operations.

Conclusion

So far, my first impressions are overwhelming in a good sense.
The Freebase already contains quite a few models as well as a lot of content, mostly imported from compatible sources like Wikipedia.

The future of Freebase will depend on the adoptation by developers and users equally. Will we be able to get the Answer to Life, the Universe and Everything soon, or will it become the next Dmoz project?