For my thesis project, i need a programmatically easy-to-use, powerful dictionary.. Therefore, i made (collected actually) a list of items that compares
Freebase (
http://www.freebase.com/) and
Dbpedia (
http://dbpedia.org/About).
- Dbpedia in general is more accurate as it directly rips off stuff from Wikipedia. Freebase has a longer tail, since it collects info not just from Wikipedia, but also various other data sources.
- Both extract structured data from Wikipedia and make it available as RDF.
- Different schemas, identifiers, goals
- Dbpedia -> stores its data as RDF tuples
- Freebase -> n-tuples
- Dbpedia -> data is automatically generated from Wikipedia several times a year
- Freebase -> data is automatically imported into Freebase after two weeks
- Dbpedia -> query via a SPARQL endpoint
- Freebase -> query via an MQL (Metaweb Query Language) API
- Differences in
- Range of data sources
- Dbpedia -> focuses on just Wikipedia data
- Freebase -> import data from a wide variety of sources
- Ability to edit content
- Dbpedia -> requires that you edit Wikipedia for the change to appear in Dbpedia
- Freebase -> user-editable, contributions can be made via a public interface
- Structure of organizations
- Dbpedia -> funded by various organizations
- Freebase -> funded by Google
Through the common link of Wikipedia, it is possible to link some Freebase topics to Dbpedia resources.
Freebase -> open, Creative Commons licenced, graph database
An entity is a single person, place or thing. Freebase connects entities together as a graph.
Freebase API:
- a collection of HTTP API's providing read & write access to data stored in Freebase.
- different API's support different use cases.
- SEARCH API -> returns Freebase data given a free text user query.
- MQL Services (mqlread & mqlwrite) allow performing structured queries on Freebase using MQL. (This is the most common way to access graph data and to ask questions)
- TEXT Service -> takes an ID of a topic, returns its description
- IMAGE Service -> takes an ID, returns an image
- need to obtain an API Key - unique key generated using the console (on Google account, API console, create project)
- The project passes key (key=(API_KEY))
- Limit -> read quota of 100k per day, write 10k.
- for higer quota, do request more on google
- quotas on sandbox are more, but sandbox is erased every sunday!
- data dumps may be used locally for more limit (the size is 14 GB as i remember)
- depends on Google API client libraries
API Services:
- Search -> find entities by keyword search
- MQL Read -> retrieve detailed structured data about entities or collections of entities
- Topic API -> get a summary of all the info for an entity
- RDF API -> get a summary of all the info for an entity in RDF
- Text Service -> get short textual descriptions for entities
- Image Service -> get repr. thumbnails for entities
- Freebase Suggest -> UI Widget picking entities
URI pattern for an API call:
GET https://www.googleapis.com/freebase/<version>/<apiname>[<path>]? [<urlparams>]
if request query is too long, params should be passed via POST.
but X-HTTP-Method-Override: GET header must be added to request.
version is v1 for production, v1sandbox for sandbox environment (experimental)
callback -> url param will return a json structure enclosed in a javascript function call as an argument to the function (supports JSONP pattern)