<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Freebase Blog &#187; API</title>
	<atom:link href="http://blog.freebase.com/category/developers/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.freebase.com</link>
	<description>A blog for data geeks, application developers and interested civilians</description>
	<lastBuildDate>Wed, 25 Nov 2009 01:29:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>freebase-python 1.0</title>
		<link>http://blog.freebase.com/2009/07/10/freebase-python-1-0/</link>
		<comments>http://blog.freebase.com/2009/07/10/freebase-python-1-0/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 01:22:34 +0000</pubDate>
		<dc:creator>skud</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[freebase]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[release notes]]></category>

		<guid isPermaLink="false">http://blog.freebase.com/?p=1059</guid>
		<description><![CDATA[Just in time for Hack Day, Andrew Rodriguez announces&#8230;
The freebase-python library 1.0 is now available! It introduces a new syntax for accessing the freebase api, it updates the available commands to reflect the entire web api, and it introduces some cool schema manipulation utilities. It&#8217;s backwards compatible with previous versions of the library.
The new syntax [...]]]></description>
			<content:encoded><![CDATA[<p><i>Just in time for <a href="http://freebasehackday.eventbrite.com/">Hack Day</a>, Andrew Rodriguez announces&#8230;</i></p>
<p>The freebase-python library 1.0 is now available! It introduces a new syntax for accessing the freebase api, it updates the available commands to reflect the entire web api, and it introduces some cool schema manipulation utilities. It&#8217;s backwards compatible with previous versions of the library.</p>
<p>The new syntax makes it easy to start running with freebase:</p>
<pre>
&gt; &gt; &gt; import freebase
&gt; &gt; &gt; print freebase.mqlread({"id" : "/en/the_beatles", "name" : None})
{u'id': u'/en/the_beatles', u'name': u'The Beatles'}
</pre>
<p>You can also access freebase.sandbox as easily:</p>
<pre>
&gt; &gt; &gt; import freebase.sandbox
&gt; &gt; &gt; print freebase.sandbox.mqlread(...)
</pre>
<p>freebase-python can now do all of the current api calls that the website handles. For a full list of the api calls and examples, you can refer to <a href="http://code.google.com/p/freebase-python/wiki/GettingStarted">http://code.google.com/p/freebase-python/wiki/GettingStarted</a>.</p>
<p>The schema manipulation utilities introduced make it easy copy and move types, properties, and objects. This means that you can save bases to your computer so that their survive a sandbox refresh, keep different versions of your bases and types on your own machine, or move types between bases. There are a few recipes on the freebase-python wiki that you can find here: <a href="http://code.google.com/p/freebase-python/w/list?can=2&#038;q=label%3ARecipe%2CSchema-Manipulation">http://code.google.com/p/freebase-python/w/list?can=2&#038;q=label%3ARecipe%2CSchema-Manipulation</a></p>
<p>freebase-python is also Google App Engine friendly. You can check out how to write your own app at <a href="http://code.google.com/p/freebase-python/wiki/GoogleAppEngine">http://code.google.com/p/freebase-python/wiki/GoogleAppEngine</a>. You can also check out a sample app at <a href="http://freebase-images.appspot.com">http://freebase-images.appspot.com</a>.</p>
<p>There are also more test and more docs!</p>
<p>Installing is easy, if you have easy_install, just say</p>
<pre>$ easy_install freebase</pre>
<p>If you don&#8217;t have easy_install, you can get it by running <a href="http://peak.telecommunity.com/dist/ez_setup.py">http://peak.telecommunity.com/dist/ez_setup.py</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.freebase.com/2009/07/10/freebase-python-1-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Toucha toucha toucha touch me!</title>
		<link>http://blog.freebase.com/2008/08/28/toucha-toucha-toucha-touch-me/</link>
		<comments>http://blog.freebase.com/2008/08/28/toucha-toucha-toucha-touch-me/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 00:35:52 +0000</pubDate>
		<dc:creator>skud</dc:creator>
				<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://blog.freebase.com/?p=229</guid>
		<description><![CDATA[Here&#8217;s a little Rocky Horror Picture Show clip to help you remember one of our newer API features.

We often get asked by application developers how to clear the cache.  The problem occurs when you have an app that reads from Freebase, then you go edit some data via the Freebase.com website, and expect it [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little <a href="http://freebase.com/view/en/the_rocky_horror_picture_show">Rocky Horror Picture Show</a> clip to help you remember one of our newer API features.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/64r1MUVKO2I&#038;hl=en"></param><embed src="http://www.youtube.com/v/64r1MUVKO2I&#038;hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object></p>
<p>We often get asked by application developers how to clear the cache.  The problem occurs when you have an app that reads from Freebase, then you go edit some data via the Freebase.com website, and expect it to be immediately shown in the app.  It won&#8217;t be, because of the cache.</p>
<p>To fix this, just use our API&#8217;s <a href="http://freebase.com/view/guid/9202a8c04000641f8000000008435d33">touch</a> service.  This resets the &#8220;mwLastWriteTime&#8221; cookie and effectively clears your cache.  It&#8217;s the same thing that happens if you&#8217;re using our dev toolbar (press F8 when viewing any Freebase page) and click &#8220;Refresh cache&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.freebase.com/2008/08/28/toucha-toucha-toucha-touch-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New API service: Reconciliation</title>
		<link>http://blog.freebase.com/2008/05/13/new-api-service-reconciliation/</link>
		<comments>http://blog.freebase.com/2008/05/13/new-api-service-reconciliation/#comments</comments>
		<pubDate>Tue, 13 May 2008 23:09:40 +0000</pubDate>
		<dc:creator>skud</dc:creator>
				<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://blog.freebase.com/2008/05/13/new-api-service-reconciliation/</guid>
		<description><![CDATA[[This is a guest post by Peter, who's just released this new reconciliation service.]
Suppose you&#8217;ve compiled a detailed database of sneezing in film, tracking the character, location, and cause of each sneeze (illness, allergies, etc).  Naturally, you&#8217;d like to mash up your data with info in Freebase. What production companies are brave enough to [...]]]></description>
			<content:encoded><![CDATA[<p><i>[This is a guest post by <a href="http://www.freebase.com/view/user/rictic">Peter</a>, who's just released this new reconciliation service.]</i></p>
<p>Suppose you&#8217;ve compiled a detailed database of sneezing in film, tracking the character, location, and cause of each sneeze (illness, allergies, etc).  Naturally, you&#8217;d like to mash up your data with info in Freebase. What production companies are brave enough to push the limits of sneezing cinema? Do actor-directors tend to give sneezing parts to their own characters? These questions burn to be answered!</p>
<div style="text-align: center"><a href="http://www.freebase.com/view/guid/9202a8c04000641f80000000045bd9ee"><img src="http://www.freebase.com/api/trans/image_thumb//wikipedia/images/en_id/3137366?maxheight=280&#038;maxwidth=280"></a><br />
<small><a href="http://www.freebase.com/view/guid/9202a8c04000641f80000000045bd9ee"><i>Fred Ott&#8217;s sneeze</i></a> (1894), the first motion film to be copyrighted in the United States</i></small></div>
<p>The first step in creating a mash-up is to determine how your entities &#8212; in this case, movies &#8212; match against entities in Freebase. We call this the reconciliation problem, but fortunately there are a couple of ways to tackle it.</p>
<p>The best option, when available, is to use a key. Keys are properties that uniquely identify an entity, like the Freebase GUID for each topic. It&#8217;s unlikely that you&#8217;ll be lucky enough to have Freebase GUIDs for your data, but there are domain-specific keys that you can use. For example, movies have Netflix IDs and IMDB profile pages, books have ISBNs, commercial products have UPCs, and just about everything in modern music has a MusicBrainz ID.</p>
<p>Reconciling with keys is easy. If Freebase has the key, a single mql query will give you the movie in question. For example, if you have the movie <i>Plan 9 from Outer Space</i> in your database, you could find it in Freebase by the <a href=http://www.freebase.com/tools/queryeditor?q=%7B%0A%20%20%22id%22%20:%20%22/en/plan_9_from_outer_space%22,%0A%20%20%22type%22:%20%22/film/film%22,%0A%20%20%22*%22:%5B%5D%0A%7D&amp;read=1 title="Query for Plan 9 From Outer Space by id">Freebase id</a>, <a href=http://www.freebase.com/tools/queryeditor?q=%7B%0A%20%20%22id%22:%20%22/wikipedia/en/Plan_Nine_From_Outer_Space%22,%0A%20%20%22type%22:%20%22/film/film%22,%0A%20%20%22*%22:%5B%5D%0A%7D&amp;read=1 title="Find Plan 9 From Outer Space by wikipedia article name">wikipedia article name</a>, <a href=http://www.freebase.com/tools/queryeditor?q=%7B%0A%20%20%22id%22:%20%22/wikipedia/en_id/25145%22,%0A%20%20%22type%22:%20%22/film/film%22,%0A%20%20%22*%22:%5B%5D%0A%7D&amp;read=1 title="Find Plan 9 from Outer Space by Wikipedia curid">wikipedia curid</a>, or the <a href=http://www.freebase.com/tools/queryeditor?q=%7B%0A%20%20%22/film/film/imdb_id%22%20:%20%22http://www.imdb.com/title/tt0052077%22,%0A%20%20%22type%22:%20%22/film/film%22,%0A%20%20%22*%22:%5B%5D%0A%7D&amp;read=1 title="Query for Plan 9 From Outer Space by IMDB profile page">imdb_url</a>.</p>
<p>But if you don&#8217;t have a key, how can you reconcile your entities?  Fortunately, we&#8217;ve come up with an experimental new web API service that exposes some of our reconciliation techniques and makes them easy to use. The service takes a name and a list of Freebase types, and then returns a list of the Freebase topics that are the closest match. Because the service is intended for use with automated reconciliation tools, it also returns a recommendation for how to treat the results. </p>
<p>As an example, let&#8217;s try to reconcile something simple, like the well-known classic movie <i>The Pumaman</i>. If you look at <a href=http://www.freebase.com/dataserver/reconciliation/?name=The+Pumaman&amp;types=%2Ffilm%2Ffilm title='Freebase Reconciliation query for "The Pumaman"'>the query</a> you&#8217;ll see some JSON results that begin like this:</p>
<pre>
{
    "recommendation": "automerge"
    "results": [
      {
            "score": {
                "aggregate": 1.4,
                "type": 1.0,
                "name": 1.0
            },
            "id": "\/topic\/en\/the_pumaman",
            "name": "The Pumaman"
      },
      &lt;snip...>
    ]
}
</pre>
<p>In the results the service will make one of three recommendations: &#8220;automerge,&#8221; &#8220;autocreate,&#8221; or &#8220;suggest.&#8221; The &#8220;automerge&#8221; result is ideal. It means that your program is free to treat the first result as the entity that you&#8217;re looking for, and we can add or retrieve whatever information we want about /topic/en/the_pumaman. A recommendation of &#8220;autocreate&#8221; is also good, and means that your program can automatically create a new topic because there&#8217;s nothing in Freebase that matches your query. The &#8220;suggest&#8221; result is returned when the reconciliation service can&#8217;t give a conclusive answer, perhaps because there&#8217;s not enough information. For example, there are over fifty <a href=http://www.freebase.com/view/search?limit=30&amp;start=0&amp;query=john%20smith&amp;type=/people/person title="Freebase search for John Smith">John Smiths</a> in Freebase, and more than a dozen films named <a href=http://www.freebase.com/view/search?limit=30&amp;start=0&amp;query=christmas%20carol&amp;type=/film/film title="Freebase search for A Christmas Carol">A Christmas Carol</a> (not including <a href=http://www.freebase.com/view/en/the_muppet_christmas_carol title="The Muppet Christmas Carol">The Muppet Christmas Carol</a>, or <a href=http://www.freebase.com/view/guid/9202a8c04000641f8000000005ab3f40 title="planned 3D adaptation">the planned 3D adaptation</a> with <a href=http://www.freebase.com/view/en/jim_carrey title="Jim Carrey">Jim Carrey</a>). When your program gets a &#8220;suggest&#8221; recommendation, it&#8217;s an indication that additional analysis, and perhaps human input, is needed. For movies, a simple heuristic based around the year the movie was released is usually enough to resolve reconciliation problems.</p>
<p>That&#8217;s the quick overview of the reconciliation service. The full technical documentation is <a href=http://www.freebase.com/view/guid/9202a8c04000641f8000000007beed56 title="Reconciliation Service Documentation">here</a> (with more examples).  Feedback is welcome on <a href=http://lists.freebase.com/mailman/listinfo/developers title="The Freebase Developers' Mailing list">the Freebase Developers&#8217; Mailing list</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.freebase.com/2008/05/13/new-api-service-reconciliation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
