Freebase Workshop, December 2009
Upcoming SlideShare
Loading in...5
×
 

Freebase Workshop, December 2009

on

  • 3,452 views

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 ...

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

Statistics

Views

Total Views
3,452
Views on SlideShare
3,450
Embed Views
2

Actions

Likes
0
Downloads
34
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Freebase Workshop, December 2009 Freebase Workshop, December 2009 Presentation Transcript

  • Freebase Workshop Jamie Taylor New York City, December 2009 Code available at: http://dev.mqlx.com/~jamie/nyc2009
  • Building a MQL Query
  • "type":"/type/object" is assumed "name" = /type/object/name [{ "name" : null, "type" : "/tv/tv_program" }] MQL
  • http://www.freebase.com/app/queryeditor
  • { "id":"/en/ncis", "name" : null, "type" : "/tv/tv_program" } MQL
  • "/program_creator" = /tv/tv_program/program_creator { "id":"/en/ncis", "name" : null, "type" : "/tv/tv_program", "program_creator":[ ] } MQL
  • { "id":"/en/ncis", "name" : null, "type" : "/tv/tv_program", "program_creator":[{ "id":null, "name":null }] } MQL
  • Mark Harmon TV Performance Jethro Gibbs { "id":"/en/ncis", "name" : null, "type" : "/tv/tv_program", "program_creator":[{ "id":null, "name:null }], "regular_cast":[{ "actor":null, "character":null }] }
  • { "id":"/en/ncis", "name" : null, "type" : "/tv/tv_program", "program_creator":[{ "id":null, "name:null }], "regular_cast":[{ "actor":null, "character":null }] }
  • Mark Harmon TV Performance 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 }] }
  • { "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":"/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}] }
  • Accessing Freebase Services via PHP
  • 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;
  • Accessing External Services via MQL Extensions
  • A Graph of Entities
  • A Graph of Services
  • http://www.bestbuy.com/site/She+Wolf… http://www.daylife.com/topic/Shakira http://twitter.com/shakira http://www.facebook.com/shakira http://www.myspace.com/shakira http://www.last.fm/music/Shakira http://www.netflix.com/RoleDisplay/Shakira/20046629 http://www.guardian.co.uk/music/shakira
  • 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
  • eMQL Query {   "id":   "/en/ibm", ticker   "type": "/business/company",   "ticker_symbol": [{ "ibm"     "stock_exchange": null,     "ticker_symbol":null   }] }
  • eMQL Query {   "id":   "/en/ibm",   "type": "/business/company", ticker   "ticker_symbol": [{     "stock_exchange": null, "ibm"     "ticker_symbol":null, "quote":null   }] }
  • eMQL Query {   "id":   "/en/ibm",   "type": "/business/company", ticker   "ticker_symbol": [{     "stock_exchange": null, "ibm"     "ticker_symbol":null, "quote":null "pre"   }] } "fetch"
  • 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
  • MQL Read Service http://api.freebase.com/api/service/mqlread?query= {"query":{"id":"/en/ncis", "name":null}} http://api.freebase.com/api/service/mqlread?queries= {"q0":{"query":{"id":"/en/ncis", "name":null}}} {"q1":{"query":{"id":"/en/blade_runner", "name":null}}}
  • MQL Requests in PHP {"id":"/en/ncis", "name":null} $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"]
  • Demo eMQL Extensions stock quote @tag references
  • TV Episode Adapter Query: {   "id":"/en/ncis",   "/user/jamie/extension/tv_episode": null } Desired Data: "name":"Faith" "airdate": "Dec/15/2009" "id":"/authority/tvrage/episode/1064868143"
  • TV Rage Episode Adapter
  • http://services.tvrage.com/tools/quickinfo.php?show=NCIS Show ID@4628 Show Name@NCIS Show URL@http://www.tvrage.com/NCIS Premiered@2003 Started@Sep/23/2003 Ended@ Latest Episode@07x09^Child's Play^Nov/24/2009 Next Episode@07x10^Faith^Dec/15/2009 RFC3339@2009-12-15T20:00:00-5:00 GMT+0 NODST@1260921600 Country@USA Status@Returning Series Classification@Scripted Genres@Action | Crime | Drama | Military/War Network@CBS Airtime@Tuesday at 08:00 pm Runtime@60
  • TV Episode Adapter eMQL Driver TV Rage Time query dispatched pre eMQL MQL Query Extend MQL query to retrieve TV Rage Key (program identifier) updated MQL query Adapter TV Rage Service run MQL query MQL results Life Cycle fetch get series data next episode number, name,date get episode data next episode URL format results results return query results
  • 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!
  • 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
  • http://ids.freebaseapps.com
  • 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
  • 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
  • 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