freebase workshop, december 2009

37
Freebase Workshop Jamie Taylor New York City, December 2009 Code available at: http://dev.mqlx.com/~jamie/nyc2009

Upload: jamie-taylor

Post on 24-Jan-2015

2.938 views

Category:

Technology


2 download

DESCRIPTION

Presented at the Freebase NYC Workshop, December 2009. Covers basic MQL query construction, basic service calls and eMQL adapter construction. PHP Code can be found at http://dev.mqlx.com/~jamie/nyc2009

TRANSCRIPT

Page 1: Freebase Workshop, December 2009

Freebase WorkshopJamie TaylorNew York City, December 2009

Code available at: http://dev.mqlx.com/~jamie/nyc2009

Page 2: Freebase Workshop, December 2009

Building a MQL Query

Page 3: Freebase Workshop, December 2009

MQL

[{ "name" : null, "type" : "/tv/tv_program"}]

"type":"/type/object" is assumed"name" = /type/object/name

Page 5: Freebase Workshop, December 2009

MQL

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program"}

Page 6: Freebase Workshop, December 2009
Page 7: Freebase Workshop, December 2009

MQL

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program",

"program_creator":[ ]}

"/program_creator" = /tv/tv_program/program_creator

Page 8: Freebase Workshop, December 2009

MQL

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name":null }]}

Page 9: Freebase Workshop, December 2009

TVPerformance

Mark Harmon

Jethro Gibbs{

"id":"/en/ncis", "name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name:null }],"regular_cast":[{

"actor":null, "character":null

}]}

Page 10: Freebase Workshop, December 2009

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name:null }],"regular_cast":[{

"actor":null, "character":null

}]}

Page 11: Freebase Workshop, December 2009

TVPerformance

Mark Harmon

Jethro Gibbs{

"id":"/en/ncis", "name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name:null }],"regular_cast":[{

"actor": {"id":null, "name":null}, "character":null

}]}

Page 12: Freebase Workshop, December 2009

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name:null }],"regular_cast":[{

"actor": {"id":null, "name":null}, "character":null

}],"spin_offs":[ ]

}

Page 13: Freebase Workshop, December 2009

{"id":"/en/ncis",

"name" : null, "type" : "/tv/tv_program",

"program_creator":[{ "id":null, "name:null }],"regular_cast":[{

"actor": {"id":null, "name":null}, "character":null

}],"spin_offs":[{"id":null, "name":null,

"air_date_of_first_episode":null}]}

Page 14: Freebase Workshop, December 2009

Accessing Freebase Services via PHP

Page 15: Freebase Workshop, December 2009

Service Requests in PHP

• Using cURL to make external service requests

$topicid = "/en/ncis";$widgeturl = "http://www.freebase.com/widget/topic?id= $topicid&mode=i&panes=image,article_props";

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $widgeturl);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resultstr = curl_exec($ch);curl_close($ch);

print $resultstr;

Page 16: Freebase Workshop, December 2009

Accessing External Services via MQL Extensions

Page 17: Freebase Workshop, December 2009

A Graph of Entities

Page 18: Freebase Workshop, December 2009

A Graph of Services

Page 19: Freebase Workshop, December 2009

http://www.myspace.com/shakira

http://www.facebook.com/shakira

http://twitter.com/shakira

http://www.daylife.com/topic/Shakira

http://www.bestbuy.com/site/She+Wolf…

http://www.guardian.co.uk/music/shakira

http://www.last.fm/music/Shakira

http://www.netflix.com/RoleDisplay/Shakira/20046629

Page 20: Freebase Workshop, December 2009

eMQL: MQL Extensions

• Request data from other service providers• Services accessed transparently within MQL query

• Use Freebase Keys/Properties in external service request

• Uses:

• real-time data services

• Stock quotes, sensor data

• premium services

• requests can specify private "api keys" for the service

• fine grained & authoritative data sources

Page 21: Freebase Workshop, December 2009

eMQL Query

{  "id":   "/en/ibm",  "type": "/business/company",  "ticker_symbol": [{    "stock_exchange": null,    "ticker_symbol":null  }]}

ticker

"ibm"

Page 22: Freebase Workshop, December 2009

{  "id":   "/en/ibm",  "type": "/business/company",  "ticker_symbol": [{    "stock_exchange": null,    "ticker_symbol":null, "quote":null  }]}

eMQL Query

ticker

"ibm"

Page 23: Freebase Workshop, December 2009

{  "id":   "/en/ibm",  "type": "/business/company",  "ticker_symbol": [{    "stock_exchange": null,    "ticker_symbol":null, "quote":null  }]}

eMQL Query

ticker

"ibm"

"pre"

"fetch"

Page 24: Freebase Workshop, December 2009

eMQL Service Request• Pre

• Modify MQL query to provide additional information necessary to complete request

• e.g., retrieve specific namespace keys

• Fetch• Produce (retrieve, calculate, format) value for the

eMQL property

• Reduce (optional)• Create a result that looks across all results returned

in the query

• Help

• Document how the property is used

Page 26: Freebase Workshop, December 2009

MQL Requests in PHP

$topicid = "/en/ncis";$simplequery = array('id'=>$topicid, 'name'=>null);$queryarray = array('q1'=>array('query'=>$simplequery)); #query envelope

$jsonquerystr = json_encode($queryarray);$mqlurl = "http://www.freebase.com/api/service/mqlread?queries=". $jsonquerystr;

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $mqlurl);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resultstr = curl_exec($ch);curl_close($ch); $resultarray = json_decode($resultstr, true); #true:give us an array

$topicname = $resultarray["q1"]["result"]["name"]

{"id":"/en/ncis", "name":null}

Page 27: Freebase Workshop, December 2009

Demo eMQL Extensions

stock quote

@tag references

Page 28: Freebase Workshop, December 2009

TV Episode Adapter

{  "id":"/en/ncis",  "/user/jamie/extension/tv_episode": null}

"name":"Faith""airdate": "Dec/15/2009"

"id":"/authority/tvrage/episode/1064868143"

Query:

DesiredData:

Page 29: Freebase Workshop, December 2009

TV Rage Episode Adapter

Page 30: Freebase Workshop, December 2009

Show ID@4628Show Name@NCISShow URL@http://www.tvrage.com/NCISPremiered@2003Started@Sep/23/2003Ended@Latest Episode@07x09^Child's Play^Nov/24/2009Next Episode@07x10^Faith^Dec/15/2009RFC3339@2009-12-15T20:00:00-5:00GMT+0 NODST@1260921600Country@USAStatus@Returning SeriesClassification@ScriptedGenres@Action | Crime | Drama | Military/WarNetwork@CBSAirtime@Tuesday at 08:00 pmRuntime@60

http://services.tvrage.com/tools/quickinfo.php?show=NCIS

Page 31: Freebase Workshop, December 2009

Tim

e

TV

Ep

iso

de

Ad

ap

ter

eM

QL D

rive

r

pre

updated MQLquery

MQ

L Q

ue

ry

run MQLquery

MQLresults

fetch

Extend MQL query to retrieveTV Rage Key (program identifier)

TV

Ra

ge

Se

rvic

e

get seriesdata

next episodenumber,

name,date

nextepisode

URL

get episodedata

query dispatched

format results

results

returnqueryresults

TV RageeMQL

AdapterLife Cycle

Page 32: Freebase Workshop, December 2009

Using Foreign Identifiers to locate Freebase Topics

• /authority Namespace• Organizations managing stable entity identifiers

• /source - identifiers only appearing in URLs

• Keys can be for URLs to other sites• And vice-versa!

Page 33: Freebase Workshop, December 2009

URLs and Freebase Keys

• http://www.imdb.com/title/tt0083658• /authority/imdb/title/tt0083658• http://www.rottentomatoes.com/alias?type=imdbid&s=0083658

• http://dbpedia.org/resource/Blade_Runner• /wikipedia/en/Blade_Runner• http://en.wikipedia.org/wiki/Blade_Runner

• http://musicbrainz.org/artist/2c4dae8c-e591-49e0-9c5a-62b310a15788.html• /authority/musicbrainz/2c4dae8c-

e591-49e0-9c5a-62b310a15788• http://www.bbc.co.uk/music/artists/2c4dae8c-

e591-49e0-9c5a-62b310a15788

Page 34: Freebase Workshop, December 2009

http://ids.freebaseapps.com

Page 35: Freebase Workshop, December 2009

Using Freebase RDF URIs

http://rdf.freebase.com/ns/<freebase-key>

• Performs content negotiation (HTTP ACCEPT Header)

• Produces HTML for standard browsers

• Produces RDF if you ask for it

• Easily translated to MQL style Freebase identifiers

http://rdf.freebase.com/ns/en.ncis = /en/ncis

Page 36: Freebase Workshop, December 2009

Entity Extractors

• Zemanta• Freebase RDF URIs• Wikipedia Links• IMDB identifiers

• Orchestr8• Freebase RDF URIs• DBPedia RDF URIs• MusicBrainz identifiers• Crunchbase identifiers

• OpenCalais• Freebase RDF URIs• DBPedia RDF URIs

Page 37: Freebase Workshop, December 2009

Getting Started++• Freebase Documentation Hub

• http://www.freebase.com/docs

• Developer Mailing List• http://freebase.markmail.org/search/?q=list:com.freebase.developers

• Schema/Modeling assistance• Data Modeling Mailing List

• http://freebase.markmail.org/search/?q=list:com.freebase.data-modeling

• Real Time help on IRC• Freenode #freebase

• Freebase Happenings• http://blog.freebase.com