SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
Yahoo Query Language
    select * from internet




          Jonathan Trevor (jtrevor@yahoo-inc.com) @jonathantrevor
Application ?
Application ?
Application ?
Application ?
Application ?
Application =
data manipulation
Application =
data manipulation
Application =           +
                data visualization
data
data
data
data
YQL - select * from internet version 2
dev
dev
dev
dev
dev
dev
dev
dev
dev
dev
dev
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
var map = new
          YMap(document.getElementById('map'));
          …
dev       var currentGeoPoint = new
          YGeoPoint( _c.Lat, _c.Lon );
          map.addMarker(currentGeoPoint);


      ?
          …



          …
          if (flickcurl_prepare(fc,


      ?
          "flickr.photos.geo.correctLocation",
          parameters, count)) { … }
          …



      ?   http://search.yahooapis.com/
          ImageSearchService/V1/imageSearch?
          appid=YahooDemo&query=Corvette&results=2


      ?
          http://weather.yahooapis.com/
          forecastrss?p=FRXX0076&u=c
var map = new
          YMap(document.getElementById('map'));
          …
dev       var currentGeoPoint = new
          YGeoPoint( _c.Lat, _c.Lon );
          map.addMarker(currentGeoPoint);


      ?
          …



          …
          if (flickcurl_prepare(fc,


      ?
          "flickr.photos.geo.correctLocation",
          parameters, count)) { … }
          …



      ?   http://search.yahooapis.com/
          ImageSearchService/V1/imageSearch?
          appid=YahooDemo&query=Corvette&results=2


      ?
          http://weather.yahooapis.com/
          forecastrss?p=FRXX0076&u=c
Yahoo!    My Yahoo!   Mail                                                                                                             Welcome, guest       Sign In

                                                                                                                                                         Search


MY PROJECTS            APIs & WEB SERVICES           var map = new
                                                    RESOURCES            SUPPORT

YDN       Maps Suite     AJAX Maps                   YMap(document.getElementById('map'));
Yahoo! Maps Web Services - AJAX API Getting          …                                                            READY TO GET STARTED?
                                                                                                                                                                  You aren't signed in      Sign In   Help

Started Guide                                        var currentGeoPoint = newGet an App ID
           dev Home     The Tour     Sign Up     Explore                                    Search
Learn the fundamentals of the Yahoo! Maps AJAX API and start creating your own maps. This page contains:

Introduction and Prerequisites
                                                     YGeoPoint( _c.Lat, _c.Lon );
                                                                           Yahoo! Maps Cheatsheets
Examples       Flickr Services                                                      Yahoo!    My Yahoo!  Mail  RECENT BLOG ARTICLES                                                                                                  Welcome, guest            Sign In

               API Documentation Feeds Your API Keys map.addMarker(currentGeoPoint);
      Display a Yahoo! Map




                                                              ?
                                                      Apply for a new API Key
      Add controls to your Yahoo! Map                                                                          Leonardo da Vinci: Hacker                                                                                                               Search
      Add a logger to a Yahoo! Map
      Place a marker on a Yahoo! Map                 …                             MY PROJECTS
                                                                                                               January 24, 2009

                                                                                                        APIs & WEB SERVICES             RESOURCES            SUPPORT
      Draw Polylines on a Yahoo! Map                                                                           Whaddyathink? & the Yahoo! Application
                                      flickr.places.getPlaceTypes
      Place Smart Markers on a Yahoo! Map
      Add multiple custom markers on Yahoo! Map
                                                                                  YDN       Weather RSS Feed
                                                                                                               Platform
                                                                                                               January 22, 2009
      Traffic information overlay
      Yahoo! Pipes RSS output information overlay          Yahoo! Weather RSS Feed                             Making the new Yahoo! Currency Converter
                                                                                                                                    Yahoo!    My Yahoo!   Mail                                                                                                                                 Welcome, guest             Sign In
      Local search results overlay
                                        Fetches a list of available place types for Flickr.
      Yahoo! Pipes JSON output information overlay
                                                                           YMap                                accessible
                                                                                  The Weather RSS feed enables you
                                                                                                               Januaryto get up-to-date weather information for your location. You can save this
                                                                                                                        21, 2009
      Overlay GeoRSS XML data
      Overlay custom objects at YGeoPoint location
                                                                                        …
                                                                                  feed in My Yahoo! or your favorite feed aggregator, or incorporate the RSS data into your own web site or client
                                                                                                                                                                                                                                                                                                                    Search

                                                                                  application. The Weather RSSRetrievingdynamically-generatedfrom based on zip code or Location ID.
                                                                                                                feed is a and displaying data feed
                                      Authentication
      Overlay custom objects at YCoordPoint location
      Overlay polyline on Yahoo! Map                                                    if (flickcurl_prepare(fc,
                                                                                                               Wikipedia with YQL PROJECTS
                                                                                                                                   MY                    APIs & WEB SERVICES             RESOURCES
                                                                                  This page describes the format of the 18, 2009 URL and the RSS response for developers. It contains these
                                                                                                               January request
                                                                                                                                                                                                          SUPPORT




                                                              ?
      Export Yahoo! Map in GeoRSS format                                                                                           YDN       Image Search Documentation for Yahoo! Search Web Services
                                        This method does not require authentication.
      GeoRSS overlay with polyline
                                                                                        "flickr.photos.geo.correctLocation",
                                                                                  sections:
      Get zoom level given radius from center
      Custom position of controls     Arguments                                        RSS Request   Image Search Documentation for Yahoo! Search                                                                                                                   READY TO GET STARTED?

      Change Marker Images Dynamically
      Use YMapTypeControl to position map types
                                                                                        parameters, count)) { … }
                                                                                            Summary
                                                                                            Request Parameters
                                                                                                                                                                                                                                                                    By applying for an Application ID for this service, you
                                                                                                                                                                                                                                                                    hereby agree to the Terms of Use

                                                                                                     Submitting Image Queries
Rate Limit
                                        api_key (Required)
Other Features of the Yahoo! Maps AJAX API
                                                                                        …
                                                                                       RSS Response
                                                                           YEvent, YGeoRSS, YMarker
                                               Your API application key. See here for moreTop-Level Elements
                                                                                              details.                             The Image Search Web Service allows you to search the Internet for images.
                                                                                                                                                                                                                                                                                       Get an App ID
Terms of Service                                                                            Channel Elements
Support & Community
                                                                                            Image Elements




                                                              ?
                                      Example Response                                      Item Elements
Download all of the cheatsheets and example code in the Yahoo                                                                        Request URL
Maps API Reference Bundle.                                                                  Condition Codes                                                                                                                                                         YAHOO! GROUPS DISCUSSIONS                           view all
                                         <place_types>                                 Examples                                    http://search.yahooapis.com/ImageSearchService/V1/imageSearch
For detailed descriptions of the classes and methods in the API, place_type_id="22">neighbourhood</place_type>
                                              <place_type                                                                                                                                                                                                           yahoo local search code in php
                                                                                       Terms of Use
                                                                                                                                                                                                                                                                    Tue, 27 Jan 2009
check out v3.8 Reference Manual.              <place_type place_type_id="7">locality</place_type>
                                          <place_type
                                          <place_type
                                                                                        http://search.yahooapis.com/
                                                               place_type_id="9">county</place_type>
                                                                              RSS Request
                                                               place_type_id="8">region</place_type>
                                                                       Remaining, Supporting Classes
                                                                                                                           Request parameters                                                                                                                       My Web Search API shut down
                                                                                                                           See information on constructing REST queries                                                                                             announcement

Introduction and
                                          <place_type
                              Prerequisites
                                          <place_type
                                                                                        ImageSearchService/V1/imageSearch?
                                                               place_type_id="12">country</place_type>
                                                                              The Weather RSS feed request follows simple HTTP GET syntax: start with a base URL and then add
                                                               place_type_id="29">continent</place_type> (?). Multiple parameters are separated by an ampersand (&).
                                                                              parameters and values after a question mark
                                                                                                                                                                                                                                                                    Wed, 21 Jan 2009
                                                                                                                                       Parameter     Value                  Description
                                      </place_types>
                                                                                        appid=YahooDemo&query=Corvette&results=2
The Yahoo! AJAX Maps API lets developers add maps to their web sites using DHTML and JavaScript®. the Weather RSS feed is
                                                                                       The base URL for Maps
                                                                                                                                      appid        string (required)      The application ID. See Application IDs for more information.
                                                                                                                                                                                                                                                                    Re: Site Explorer API returns 999 Rate Limit
                                                                                                                                                                                                                                                                    Exceeded
are fully embeddable and scriptable using the JavaScript programming language. Yahoo! Maps AS-Flash API's                             query        string (required)      The query to search for. Use + to include terms, - to exclude terms, and




                                                              ?
                                                                                                                                                                                                                                                                    Wed, 21 Jan 2009
                                      Error Codes
built-in geocoder means that you can specify a physical address or latitude/longitude coordinates for your map's
                                                                                       http://weather.yahooapis.com/forecastrss                                           put quotes around "exact phrase".
location, as you like.                                                                                                                type         all (default), any, or The kind of search to submit:                                                             Reminder: Old obsolete versions of Local
                                                                                       In this section, Summary shows how to make an RSS request with different parameters; Request Parameters
                                                                                                                                                   phrase                                                                                                           Search (V1, V2) shutting do
In order to create and test applications 100: Yahoo! Maps AJAX API, you'll need to use a supported summarizing those parameters.
                                         using Invalid API Key                         shows a table web                                                                  all returns results with all query terms.                                                 Mon, 19 Jan 2009
                                                The API key passed was not valid or has expired.
browser: Firefox 2, Internet Explorer 6 or 7, Opera 9 or Safari 3. Newer versions of these browsers are also                                                              any returns results with one or more of the query terms.
supported. You can code your JavaScript applications usingcurrently unavailable
                                         105: Service your favorite text editor or IDE.                                                                                   phrase returns results containing the query terms as a phrase.
                                                                                       SUMMARY                                        results      integer: default 10, The number of results to return.
                                                The requested service is temporarily unavailable.
An application ID is required to use the Yahoo! Maps AJAX API. You can get an application ID here.                                                 max 50
                                                                                       The Weather RSS feed request follows simple HTTP GET syntax: start with a base URL and then add
                                      111: Format "xxx" not found
                                                                                                                                       start         integer: default 1
                                                                                      parameters and values after a question mark (?). Multiple parameters are separated   by an starting result position to return (1-based). The finishing position (start
                                                                                                                                                                            The ampersand (&). For
For best results, you should launch your web pagesrequested response format was not found. applications
                                                The from a web server. However, it's possible to run                                                                        + results - 1) cannot exceed 1000.
                                                                                      the Weather RSS feed there are two parameters:
directly from your hard drive by double-clickingMethod This can be donefound
                                       112: on them. "xxx" not by lowering the security settings in                                    format        any (default), bmp,    Specifies the kind of image file to search for.
the Internet Explorer browser or by setting the The requested method was not found. p for location.
                                                UniversalBrowserRead property in Firefox.                                                            gif, jpeg, png
                                                                                          u for degrees units (Fahrenheit or Celsius). adult_ok
                                       114: Invalid SOAP envelope
                                                                                http://weather.yahooapis.com/                                        no value or 1
                                                                                                                                                                content.
                                                                                                                                                                            The service filters out adult content by default. Enter a 1 to allow adult
                                        The SOAP envelope send in the requestlocationnot be parsed. required. Use this parameter to indicate the location for the weather forecast as a
                                                                         The could parameter p is
Displaying a Yahoo!              Map                                     zip code or Location ID.                         coloration     any (default), color, The service returns only the images of the coloration specified (color or
                                   115: Invalid XML-RPC Method Call
                                                                                forecastrss?p=FRXX0076&u=c
All the API classes and methods necessary to interact with Yahoo! Maps are available to your application when
                                              The XML-RPC request document could not be parsed.
                                                                                    http://weather.yahooapis.com/forecastrss?p=location
                                                                                                                                          bw                                black-and-white).
                                                                                                                            site          string: default no                A domain to restrict your searches to (e.g. www.yahoo.com). You may
you include Yahoo! Maps AJAX API library in your web page.This example uses the demonstration application
                                                                                                                                          value                             submit up to 30 values (site=www.yahoo.com&site=www.cnn.com).
ID "YD-eQRpTl0_JX2E95l_xAFs5UwZUlNQhhn7lj1H"; you cannot use this Application Forand must requestweather for Yahoo! Headquarters in Sunnyvale, CA, use the zip
                                                                                    ID example, to get one                                                                 code for Sunnyvale
here.                                 API Explorer                                  (94089):
                                                                                                                            output        string: xml                       The format for the output. If json is requested, the results will be returned
                                                                                                                                          (default), json, php              in JSON format. If php is requested, the results will be returned in
                                                                                                                                                                            Serialized PHP format.
  <html>                     API Explorer : flickr.places.getPlaceTypes
                                                                   http://weather.yahooapis.com/forecastrss?p=94089
  <head>                                                                                                         callback string                                            The name of the callback function to wrap around the JSON data. The
  <b><script type="text/javascript"                                Or use the Location ID for Sunnyvale (USCA1116):                                                         following characters are allowed: A-Z a-z 0-9 . [] and _. If output=json has
  src="http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=YD-                                                                                                                   not been requested, this parameter has no effect. More information on the
var map = new
      YMap(document.getElementById('map'));
      …
dev   var currentGeoPoint = new
      YGeoPoint( _c.Lat, _c.Lon );
      map.addMarker(currentGeoPoint);
      …



      …
      if (flickcurl_prepare(fc,
      "flickr.photos.geo.correctLocation",
      parameters, count)) { … }
      …



      http://search.yahooapis.com/
      ImageSearchService/V1/imageSearch?
      appid=YahooDemo&query=Corvette&results=2




      http://weather.yahooapis.com/
      forecastrss?p=FRXX0076&u=c
dev




      YQL
dev




      YQL
dev



       Bindings




      YQL
dev



       Bindings




      YQL
dev



                  Bindings




      YQL stmt
                 YQL
dev



                  Bindings




      YQL stmt
                 YQL
      select
dev



                  Bindings




      YQL stmt
                 YQL
      select
      desc
dev



                  Bindings




      YQL stmt
                 YQL
      select
      desc
      show
Why YQL?
Thousands of Web Services and sources that
provide valuable data
Require Developers to read documentation and form
URLs/queries.
Data is isolated
Needs filtering, combining, tweaking, shaping
even after it gets to the developer.
YQL
Hosted web service and SQL-Like Language
    Familiar to developers
      Synonymous with Data access
    Expressive enough to get the right data.
Self describing - show, desc table
Allows you to query, filter, join and update data
across any structured data on the web / web services
Real time engine
YQL Statement Basics
 show: lists the supported tables
 desc: describes the structure of a table
 select: fetches data
 insert/update/delete: modify data
 use: use an Open Data Table

show tables
desc social.contacts
YQL Select Statement

SELECT what
FROM collection
WHERE filter condition
IN (sub-select)
LIMIT n OFFSET n
Demo:
developer.yahoo.com/yql/
Get any data:
open data tables
Open Data Tables



 YQL
Open Data Tables



 YQL
Open Data Tables



 YQL
Open Data Tables



 YQL
Open Data Tables
       Bindings




 YQL
Open Data Tables



 YQL
Open Data Tables



 YQL
Open Data Tables

       Map YQL to Endpoint


 YQL
USE Verb
use ‘http://url-to-def.xml’ as tableName;
select * from tableName where key=‘value’...


 Imports the Open Data Table definition
 Makes it available as tableName
 Acts just like other YQL Tables
 Open tables can be collected together into
 environment files
Open Developer Community

  leveraging the work of others
  github repository:
  http://github.com/yql/yql-tables/tree/master
  datatables.org mirrors the master and builds a single
  environment with all tables (faster serving)
  http://developer.yahoo.com/yql/console/?env=http://
  datatables.org/alltables.env
YQL - select * from internet version 2
YQL - select * from internet version 2
Insert / Update / Delete
With INSERT / UPDATE / DELETE SQL verbs you
can modify data on the internet
  create tweets, add blog entries, update DBs etc
Some tables with I/U/D
  Twitter Status, Bit.ly shortener
  Yahoo profile status, application update stream
  Amazon SimpleDB
Part 2:
Building your own open
data tables
Open Data Tables

 Brings the power of the table model to new APIs
 Schema defines mapping between YQL and
 Endpoint
 Keys can either be query, path or matrix parameters
 Keys can be marked as required
 YQL Compiler validates existence of required keys
Open Data Tables



 YQL
Open Data Tables



 YQL
Open Data Tables
Open Data Tables
YQL <execute>
extends Open Data Tables with server-side code
access APIs that require authentication
  Netflix OAuth, FlickrAuth, Google AuthSub
join data across services
  grab New York Times article tags and generate find
  associated flickr photos
  combine multiple searches into a single result: twitter,
  web, news and image
YQL <execute>

augment data:
  city/state to APIs that just return zip code
create APIs from web page
  celebrity birthdays scraped from imdb, caltrain
data transformation
  convert the result from xml to Google's kml format
move business logic of your application to the cloud
<execute> element
Javascript server-side scripting
  No DOM, events etc, pure JS scripting
  E4X support - XML literals, filtering ...
YQL no longer performs a GET request to the table
binding URL
YQL provides additional useful global objects
  request, response, y.rest, y.include, y.query...
execute tag must return the data that will be the
output of the YQL select
hello world
 <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
  <meta>
    <sampleQuery>select * from {table} where a='cat' and b='dog';</sampleQuery>
  </meta>
  <bindings>
    <select itemPath="" produces="XML">
     <urls><url>http://fake.url/{a}</url></urls>
     <inputs>
       <key id='a' type='xs:string' paramType='path' required="true" />
       <key id='b' type='xs:string' paramType='variable' required="true" />
     </inputs>
     <execute><![CDATA[
        // Your javascript goes here. We will run it on our servers
        response.object = <item>
               <url>{request.url}</url>
               <a>{a}</a>
               <b>{b}</b>
            </item>;
     ]]></execute>
    </select>
  </bindings>
 </table>
Scraping a page
<select produces="XML" itemPath="deals.deal">
     <urls><url>http://deals.yahoo.com</url></urls>
     <execute><![CDATA[
var dealhtml = y.query("select * from html where url='http://deals.yahoo.com' and xpath='//
div[contains(@class, "product-display")]'").results;
var deals = <deals/>;
function compress(object) {
   if (!object) return "";
   return object.toString().replace(/s+/, " ")
}
for each (var div in dealhtml.div) {
   var deal = <deal/>;
   deal.name += <name>{compress(div.h3.a.text())}</name>;
   deal.link += <link>{div.div[0].a.@href}</link>;
…
   deal.description += <description>{compress(div.p[0].*)}</description>;
   deal.logo += <logo>{compress(div.div[1].*)}</logo>;
   deals.deal += deal;
}
response.object = deals;
     ]]></execute>
   </select>
Inner join (unified web+image search)
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
   <bindings>
       <select itemPath="results.result" produces="XML">
         <inputs>
             <key id="query" type="xs:string" paramType="query" required="true"/>
         </inputs>
         <execute><![CDATA[
         var qs = query;
         var search = y.query('select * from search.web(50) where query=@query', {query: qs}).results;
         var images = [];
         default xml namespace='http://www.inktomi.com/';
         for each (var result in search.result) {
           images.push(y.query('select * from search.images(1) where query=@query and url=@url',
{url:result.url, query:qs}));
         }
         var i = 0;
         for each (var result in search.result) {
           var image = images[i++].results.result;
           if (image) { result.image = <image>{image}</image>; }
         }
         response.object = search;
         ]]></execute>
       </select>
    </bindings>
</table>
Authentication: Search Netflix catalog
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd" https="true">
  <meta>...</meta>
   <bindings>
     <select itemPath="" produces="XML" >
      <urls><url env="all">http://api.netflix.com/catalog/titles/</url></urls>
      <paging model="offset">
       <start id="start_index" default="0" />
       <pagesize id="max_results" max="100" />
       <total default="10" />
      </paging>
      <inputs>
          <key id="term" type="xs:string" paramType="query" required="true" />
          <key id="ck" type="xs:string" paramType="variable" required="true" />
          <key id="cks" type="xs:string" paramType="variable" required="true" />
      </inputs>
      <execute><![CDATA[
// Include the OAuth libraries from oauth.net
y.include("http://oauth.googlecode.com/svn/code/javascript/oauth.js");
y.include("http://oauth.googlecode.com/svn/code/javascript/sha1.js");
// Collect all the parameters
var encodedurl = request.url;
var accessor = { consumerSecret: cks, tokenSecret: ""};
var message = { action: encodedurl, method: "GET", parameters: [["oauth_consumer_key",ck],["oauth_version","1.0"]]};
OAuth.setTimestampAndNonce(message);
// Sign the request
OAuth.SignatureMethod.sign(message, accessor);
try {
   // get the content from service along with the OAuth header, and return the result back out
   response.object = request.contentType('application/xml').header("Authorization", OAuth.getAuthorizationHeader("netflix.com",
message.parameters)).get().response;
} catch(err) {
   response.object = {'result':'failure', 'error': err};
}
       ]]></execute>
     </select>
    </bindings>
</table>
select * from twitter.status where
    id="2108869549" and username="xxx"
    and password="yyy"

	     	      <select itemPath="" produces="XML">
	     	      	    <urls><url>http://twitter.com/statuses/show/{id}.xml</url></urls>
	     	      	    <inputs>
	     	      	    	     <key id="username" type="xs:string" required="false" paramType="variable"/>
	     	      	    	     <key id="password" type="xs:string" required="false" paramType="variable"/>
	     	      	    	     <key id="id" type="xs:integer" required="true" paramType="path"/>
	     	      	    </inputs>
	     	      	    <execute><![CDATA[
    var r = null;
    if (username && password) {
        y.include("http://yqlblog.net/samples/base64.js");
        var authheader = "Basic "+Base64.encode(username+":"+password);
        r = request.header("Authorization",authheader).get().response;
    } else {
        r = request.get().response;
    }
    response.object = r;
    		       	    ]]></execute>
	     	      </select>
insert into twitter.status
      (status,username,password) values
      ("new tweet from YQL",”xxx”,”yyy”);

	    	    <insert itemPath="" produces="XML">
	    	    	    <urls>
	    	    	    	    <url>http://twitter.com/statuses/update.xml</url>
	    	    	    </urls>
	    	    	    <inputs>
	    	    	    	    <value id="username" type="xs:string" required="true" paramType="variable"/>
	    	    	    	    <value id="password" type="xs:string" required="true" paramType="variable"/>
	    	    	    	    <value id="status" type="xs:string" required="true" paramType="variable"/>
	    	    	    </inputs>
	    	    	    <execute><![CDATA[
    y.include("http://yqlblog.net/samples/base64.js");
    var authheader = "Basic "+Base64.encode(username+":"+password);
    var content = "status="+status;
    response.object = request.header("Authorization",authheader).post(content).response;
    		    	    ]]></execute>
	    	    </insert>
delete from twitter.status where
    id="2108869549" and username="xxx"
    and password="yyy"

	    	    <delete itemPath="" produces="XML">
	    	    	   <urls>
	    	    	   	     <url>http://twitter.com/statuses/destroy/{id}.xml</url>
	    	    	   </urls>
	    	    	   <inputs>
	    	    	   	     <key id="username" type="xs:string" required="true" paramType="variable"/>
	    	    	   	     <key id="password" type="xs:string" required="true" paramType="variable"/>
	    	    	   	     <key id="id" type="xs:string" required="true" paramType="path"/>
	    	    	   </inputs>
	    	    	   <execute><![CDATA[
    y.include("http://yqlblog.net/samples/base64.js");
    var authheader = "Basic "+Base64.encode(username+":"+password);
    response.object = request.header("Authorization",authheader).del().response;
    		    	   ]]></execute>
	    	    </delete>
Conclusion

 More easily build applications
  fewer lines of code
  data processing done away from app
  consistent and familiar syntax for all data access
  iterative environment for developing the query
Conclusion
 build applications that run faster
  service in the cloud does the work
    conversion, filtering, parallel requests...
  with smaller network footprint
    fewer (client) calls
    smaller data amounts
    closer to the data, fatter pipes
data
YQL
  select * from internet

http://developer.yahoo.com/yql


               Jonathan Trevor
        yql-questions@yahoo-inc.com

Mais conteúdo relacionado

Semelhante a YQL - select * from internet version 2

YQL - A Query Language for the Web
YQL - A Query Language for the WebYQL - A Query Language for the Web
YQL - A Query Language for the WebTom Croucher
 
Yql Openhackday 2009
Yql Openhackday 2009Yql Openhackday 2009
Yql Openhackday 2009nageshs
 
Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Tom Croucher
 
YQL and YUI - Javascript from server to user
YQL and YUI - Javascript from server to userYQL and YUI - Javascript from server to user
YQL and YUI - Javascript from server to userTom Croucher
 
How to avoid the latency trap and lessons about software design
How to avoid the latency trap and lessons  about software designHow to avoid the latency trap and lessons  about software design
How to avoid the latency trap and lessons about software designTom Croucher
 
Yahoo! features
Yahoo! featuresYahoo! features
Yahoo! featuresNaga14
 
Google MAP API
Google MAP APIGoogle MAP API
Google MAP APIEric Lee
 
GeoTechTalk InkSatogaeri Project
GeoTechTalk InkSatogaeri ProjectGeoTechTalk InkSatogaeri Project
GeoTechTalk InkSatogaeri ProjectKentaro Ishimaru
 
Find your way with SAPO Maps API
Find your way with SAPO Maps APIFind your way with SAPO Maps API
Find your way with SAPO Maps APIjdduarte
 
Sirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformSirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformObeo
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineAndy McKay
 
Mashups in the Information Technology Classroom
Mashups in the Information Technology ClassroomMashups in the Information Technology Classroom
Mashups in the Information Technology ClassroomMark Frydenberg
 
Hands on with the Google Maps Data API
Hands on with the Google Maps Data APIHands on with the Google Maps Data API
Hands on with the Google Maps Data APIss318
 
Y Map Mashup Camp
Y Map Mashup CampY Map Mashup Camp
Y Map Mashup CampJinho Jung
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google WaveRodrigo Borges
 

Semelhante a YQL - select * from internet version 2 (20)

YQL - A Query Language for the Web
YQL - A Query Language for the WebYQL - A Query Language for the Web
YQL - A Query Language for the Web
 
Yql Openhackday 2009
Yql Openhackday 2009Yql Openhackday 2009
Yql Openhackday 2009
 
Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010
 
YQL and YUI - Javascript from server to user
YQL and YUI - Javascript from server to userYQL and YUI - Javascript from server to user
YQL and YUI - Javascript from server to user
 
YQL Tutorial
YQL TutorialYQL Tutorial
YQL Tutorial
 
Seti 09
Seti 09Seti 09
Seti 09
 
How to avoid the latency trap and lessons about software design
How to avoid the latency trap and lessons  about software designHow to avoid the latency trap and lessons  about software design
How to avoid the latency trap and lessons about software design
 
Yahoo! features
Yahoo! featuresYahoo! features
Yahoo! features
 
Google MAP API
Google MAP APIGoogle MAP API
Google MAP API
 
GeoTechTalk InkSatogaeri Project
GeoTechTalk InkSatogaeri ProjectGeoTechTalk InkSatogaeri Project
GeoTechTalk InkSatogaeri Project
 
Find your way with SAPO Maps API
Find your way with SAPO Maps APIFind your way with SAPO Maps API
Find your way with SAPO Maps API
 
Google Maps Api
Google Maps ApiGoogle Maps Api
Google Maps Api
 
Sirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformSirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the Platform
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
Mashups in the Information Technology Classroom
Mashups in the Information Technology ClassroomMashups in the Information Technology Classroom
Mashups in the Information Technology Classroom
 
Hands on with the Google Maps Data API
Hands on with the Google Maps Data APIHands on with the Google Maps Data API
Hands on with the Google Maps Data API
 
Y Map Mashup Camp
Y Map Mashup CampY Map Mashup Camp
Y Map Mashup Camp
 
Yandex Maps API
Yandex Maps APIYandex Maps API
Yandex Maps API
 
YAP / Open Mail Overview
YAP / Open Mail OverviewYAP / Open Mail Overview
YAP / Open Mail Overview
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google Wave
 

Mais de Tom Croucher

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Tom Croucher
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile webTom Croucher
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfTom Croucher
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Tom Croucher
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaTom Croucher
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti codeTom Croucher
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthTom Croucher
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupTom Croucher
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...Tom Croucher
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010Tom Croucher
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming Tom Croucher
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 

Mais de Tom Croucher (20)

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @Media
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
 
Sf perf
Sf perfSf perf
Sf perf
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 

Último

IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...
IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...
IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...Sportsnewstec24
 
Kobe Bryant, The story of the "Black Mamba"
Kobe Bryant, The story of the "Black Mamba"Kobe Bryant, The story of the "Black Mamba"
Kobe Bryant, The story of the "Black Mamba"bmfcavalchini
 
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdf
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdfTheOrmaxSportsAudienceReport2024-MediaHighlights.pdf
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdfSocial Samosa
 
NCAA Tournament Free Pick, March 22 From Top March Madness Sports Handicapper
NCAA Tournament Free Pick, March 22 From  Top March Madness Sports HandicapperNCAA Tournament Free Pick, March 22 From  Top March Madness Sports Handicapper
NCAA Tournament Free Pick, March 22 From Top March Madness Sports HandicapperJoe Duffy
 
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics Trade
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics TradeInstruction Manual | Nightforce CFS 6-36x50 F1 | Optics Trade
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics TradeOptics-Trade
 
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...mxmindia
 
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick Kodos
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick KodosNicholas Kodomichalos: A Tale of Sporting Brilliance with Nick Kodos
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick KodosNicholasKodomichalos1
 
Euro 2024 Serbia's Return to the European Championship.docx
Euro 2024 Serbia's Return to the European Championship.docxEuro 2024 Serbia's Return to the European Championship.docx
Euro 2024 Serbia's Return to the European Championship.docxEticketing.co
 
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...mxmindia
 

Último (9)

IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...
IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...
IPL 2024 Fixture List Match Dates, Participating Teams, Stadiums, Venues, and...
 
Kobe Bryant, The story of the "Black Mamba"
Kobe Bryant, The story of the "Black Mamba"Kobe Bryant, The story of the "Black Mamba"
Kobe Bryant, The story of the "Black Mamba"
 
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdf
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdfTheOrmaxSportsAudienceReport2024-MediaHighlights.pdf
TheOrmaxSportsAudienceReport2024-MediaHighlights.pdf
 
NCAA Tournament Free Pick, March 22 From Top March Madness Sports Handicapper
NCAA Tournament Free Pick, March 22 From  Top March Madness Sports HandicapperNCAA Tournament Free Pick, March 22 From  Top March Madness Sports Handicapper
NCAA Tournament Free Pick, March 22 From Top March Madness Sports Handicapper
 
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics Trade
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics TradeInstruction Manual | Nightforce CFS 6-36x50 F1 | Optics Trade
Instruction Manual | Nightforce CFS 6-36x50 F1 | Optics Trade
 
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
 
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick Kodos
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick KodosNicholas Kodomichalos: A Tale of Sporting Brilliance with Nick Kodos
Nicholas Kodomichalos: A Tale of Sporting Brilliance with Nick Kodos
 
Euro 2024 Serbia's Return to the European Championship.docx
Euro 2024 Serbia's Return to the European Championship.docxEuro 2024 Serbia's Return to the European Championship.docx
Euro 2024 Serbia's Return to the European Championship.docx
 
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
Changing mindsets, rebuilding lives: Celebrating 25 years of First World Cup ...
 

YQL - select * from internet version 2

  • 1. Yahoo Query Language select * from internet Jonathan Trevor (jtrevor@yahoo-inc.com) @jonathantrevor
  • 9. data manipulation Application = + data visualization
  • 11. data
  • 12. data
  • 14. dev
  • 15. dev
  • 16. dev
  • 17. dev
  • 18. dev
  • 19. dev
  • 20. dev
  • 21. dev
  • 22. dev
  • 23. dev
  • 24. dev
  • 25. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); …
  • 26. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } …
  • 27. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2
  • 28. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 29. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 30. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 31. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 32. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 33. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); ? … … if (flickcurl_prepare(fc, ? "flickr.photos.geo.correctLocation", parameters, count)) { … } … ? http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 ? http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 34. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); ? … … if (flickcurl_prepare(fc, ? "flickr.photos.geo.correctLocation", parameters, count)) { … } … ? http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 ? http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 35. Yahoo! My Yahoo! Mail Welcome, guest Sign In Search MY PROJECTS APIs & WEB SERVICES var map = new RESOURCES SUPPORT YDN Maps Suite AJAX Maps YMap(document.getElementById('map')); Yahoo! Maps Web Services - AJAX API Getting … READY TO GET STARTED? You aren't signed in Sign In Help Started Guide var currentGeoPoint = newGet an App ID dev Home The Tour Sign Up Explore Search Learn the fundamentals of the Yahoo! Maps AJAX API and start creating your own maps. This page contains: Introduction and Prerequisites YGeoPoint( _c.Lat, _c.Lon ); Yahoo! Maps Cheatsheets Examples Flickr Services Yahoo! My Yahoo! Mail RECENT BLOG ARTICLES Welcome, guest Sign In API Documentation Feeds Your API Keys map.addMarker(currentGeoPoint); Display a Yahoo! Map ? Apply for a new API Key Add controls to your Yahoo! Map Leonardo da Vinci: Hacker Search Add a logger to a Yahoo! Map Place a marker on a Yahoo! Map … MY PROJECTS January 24, 2009 APIs & WEB SERVICES RESOURCES SUPPORT Draw Polylines on a Yahoo! Map Whaddyathink? & the Yahoo! Application flickr.places.getPlaceTypes Place Smart Markers on a Yahoo! Map Add multiple custom markers on Yahoo! Map YDN Weather RSS Feed Platform January 22, 2009 Traffic information overlay Yahoo! Pipes RSS output information overlay Yahoo! Weather RSS Feed Making the new Yahoo! Currency Converter Yahoo! My Yahoo! Mail Welcome, guest Sign In Local search results overlay Fetches a list of available place types for Flickr. Yahoo! Pipes JSON output information overlay YMap accessible The Weather RSS feed enables you Januaryto get up-to-date weather information for your location. You can save this 21, 2009 Overlay GeoRSS XML data Overlay custom objects at YGeoPoint location … feed in My Yahoo! or your favorite feed aggregator, or incorporate the RSS data into your own web site or client Search application. The Weather RSSRetrievingdynamically-generatedfrom based on zip code or Location ID. feed is a and displaying data feed Authentication Overlay custom objects at YCoordPoint location Overlay polyline on Yahoo! Map if (flickcurl_prepare(fc, Wikipedia with YQL PROJECTS MY APIs & WEB SERVICES RESOURCES This page describes the format of the 18, 2009 URL and the RSS response for developers. It contains these January request SUPPORT ? Export Yahoo! Map in GeoRSS format YDN Image Search Documentation for Yahoo! Search Web Services This method does not require authentication. GeoRSS overlay with polyline "flickr.photos.geo.correctLocation", sections: Get zoom level given radius from center Custom position of controls Arguments RSS Request Image Search Documentation for Yahoo! Search READY TO GET STARTED? Change Marker Images Dynamically Use YMapTypeControl to position map types parameters, count)) { … } Summary Request Parameters By applying for an Application ID for this service, you hereby agree to the Terms of Use Submitting Image Queries Rate Limit api_key (Required) Other Features of the Yahoo! Maps AJAX API … RSS Response YEvent, YGeoRSS, YMarker Your API application key. See here for moreTop-Level Elements details. The Image Search Web Service allows you to search the Internet for images. Get an App ID Terms of Service Channel Elements Support & Community Image Elements ? Example Response Item Elements Download all of the cheatsheets and example code in the Yahoo Request URL Maps API Reference Bundle. Condition Codes YAHOO! GROUPS DISCUSSIONS view all <place_types> Examples http://search.yahooapis.com/ImageSearchService/V1/imageSearch For detailed descriptions of the classes and methods in the API, place_type_id="22">neighbourhood</place_type> <place_type yahoo local search code in php Terms of Use Tue, 27 Jan 2009 check out v3.8 Reference Manual. <place_type place_type_id="7">locality</place_type> <place_type <place_type http://search.yahooapis.com/ place_type_id="9">county</place_type> RSS Request place_type_id="8">region</place_type> Remaining, Supporting Classes Request parameters My Web Search API shut down See information on constructing REST queries announcement Introduction and <place_type Prerequisites <place_type ImageSearchService/V1/imageSearch? place_type_id="12">country</place_type> The Weather RSS feed request follows simple HTTP GET syntax: start with a base URL and then add place_type_id="29">continent</place_type> (?). Multiple parameters are separated by an ampersand (&). parameters and values after a question mark Wed, 21 Jan 2009 Parameter Value Description </place_types> appid=YahooDemo&query=Corvette&results=2 The Yahoo! AJAX Maps API lets developers add maps to their web sites using DHTML and JavaScript®. the Weather RSS feed is The base URL for Maps appid string (required) The application ID. See Application IDs for more information. Re: Site Explorer API returns 999 Rate Limit Exceeded are fully embeddable and scriptable using the JavaScript programming language. Yahoo! Maps AS-Flash API's query string (required) The query to search for. Use + to include terms, - to exclude terms, and ? Wed, 21 Jan 2009 Error Codes built-in geocoder means that you can specify a physical address or latitude/longitude coordinates for your map's http://weather.yahooapis.com/forecastrss put quotes around "exact phrase". location, as you like. type all (default), any, or The kind of search to submit: Reminder: Old obsolete versions of Local In this section, Summary shows how to make an RSS request with different parameters; Request Parameters phrase Search (V1, V2) shutting do In order to create and test applications 100: Yahoo! Maps AJAX API, you'll need to use a supported summarizing those parameters. using Invalid API Key shows a table web all returns results with all query terms. Mon, 19 Jan 2009 The API key passed was not valid or has expired. browser: Firefox 2, Internet Explorer 6 or 7, Opera 9 or Safari 3. Newer versions of these browsers are also any returns results with one or more of the query terms. supported. You can code your JavaScript applications usingcurrently unavailable 105: Service your favorite text editor or IDE. phrase returns results containing the query terms as a phrase. SUMMARY results integer: default 10, The number of results to return. The requested service is temporarily unavailable. An application ID is required to use the Yahoo! Maps AJAX API. You can get an application ID here. max 50 The Weather RSS feed request follows simple HTTP GET syntax: start with a base URL and then add 111: Format "xxx" not found start integer: default 1 parameters and values after a question mark (?). Multiple parameters are separated by an starting result position to return (1-based). The finishing position (start The ampersand (&). For For best results, you should launch your web pagesrequested response format was not found. applications The from a web server. However, it's possible to run + results - 1) cannot exceed 1000. the Weather RSS feed there are two parameters: directly from your hard drive by double-clickingMethod This can be donefound 112: on them. "xxx" not by lowering the security settings in format any (default), bmp, Specifies the kind of image file to search for. the Internet Explorer browser or by setting the The requested method was not found. p for location. UniversalBrowserRead property in Firefox. gif, jpeg, png u for degrees units (Fahrenheit or Celsius). adult_ok 114: Invalid SOAP envelope http://weather.yahooapis.com/ no value or 1 content. The service filters out adult content by default. Enter a 1 to allow adult The SOAP envelope send in the requestlocationnot be parsed. required. Use this parameter to indicate the location for the weather forecast as a The could parameter p is Displaying a Yahoo! Map zip code or Location ID. coloration any (default), color, The service returns only the images of the coloration specified (color or 115: Invalid XML-RPC Method Call forecastrss?p=FRXX0076&u=c All the API classes and methods necessary to interact with Yahoo! Maps are available to your application when The XML-RPC request document could not be parsed. http://weather.yahooapis.com/forecastrss?p=location bw black-and-white). site string: default no A domain to restrict your searches to (e.g. www.yahoo.com). You may you include Yahoo! Maps AJAX API library in your web page.This example uses the demonstration application value submit up to 30 values (site=www.yahoo.com&site=www.cnn.com). ID "YD-eQRpTl0_JX2E95l_xAFs5UwZUlNQhhn7lj1H"; you cannot use this Application Forand must requestweather for Yahoo! Headquarters in Sunnyvale, CA, use the zip ID example, to get one code for Sunnyvale here. API Explorer (94089): output string: xml The format for the output. If json is requested, the results will be returned (default), json, php in JSON format. If php is requested, the results will be returned in Serialized PHP format. <html> API Explorer : flickr.places.getPlaceTypes http://weather.yahooapis.com/forecastrss?p=94089 <head> callback string The name of the callback function to wrap around the JSON data. The <b><script type="text/javascript" Or use the Location ID for Sunnyvale (USCA1116): following characters are allowed: A-Z a-z 0-9 . [] and _. If output=json has src="http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=YD- not been requested, this parameter has no effect. More information on the
  • 36. var map = new YMap(document.getElementById('map')); … dev var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); … … if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } … http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2 http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c
  • 37. dev YQL
  • 38. dev YQL
  • 39. dev Bindings YQL
  • 40. dev Bindings YQL
  • 41. dev Bindings YQL stmt YQL
  • 42. dev Bindings YQL stmt YQL select
  • 43. dev Bindings YQL stmt YQL select desc
  • 44. dev Bindings YQL stmt YQL select desc show
  • 45. Why YQL? Thousands of Web Services and sources that provide valuable data Require Developers to read documentation and form URLs/queries. Data is isolated Needs filtering, combining, tweaking, shaping even after it gets to the developer.
  • 46. YQL Hosted web service and SQL-Like Language Familiar to developers Synonymous with Data access Expressive enough to get the right data. Self describing - show, desc table Allows you to query, filter, join and update data across any structured data on the web / web services Real time engine
  • 47. YQL Statement Basics show: lists the supported tables desc: describes the structure of a table select: fetches data insert/update/delete: modify data use: use an Open Data Table show tables desc social.contacts
  • 48. YQL Select Statement SELECT what FROM collection WHERE filter condition IN (sub-select) LIMIT n OFFSET n
  • 50. Get any data: open data tables
  • 55. Open Data Tables Bindings YQL
  • 58. Open Data Tables Map YQL to Endpoint YQL
  • 59. USE Verb use ‘http://url-to-def.xml’ as tableName; select * from tableName where key=‘value’... Imports the Open Data Table definition Makes it available as tableName Acts just like other YQL Tables Open tables can be collected together into environment files
  • 60. Open Developer Community leveraging the work of others github repository: http://github.com/yql/yql-tables/tree/master datatables.org mirrors the master and builds a single environment with all tables (faster serving) http://developer.yahoo.com/yql/console/?env=http:// datatables.org/alltables.env
  • 63. Insert / Update / Delete With INSERT / UPDATE / DELETE SQL verbs you can modify data on the internet create tweets, add blog entries, update DBs etc Some tables with I/U/D Twitter Status, Bit.ly shortener Yahoo profile status, application update stream Amazon SimpleDB
  • 64. Part 2: Building your own open data tables
  • 65. Open Data Tables Brings the power of the table model to new APIs Schema defines mapping between YQL and Endpoint Keys can either be query, path or matrix parameters Keys can be marked as required YQL Compiler validates existence of required keys
  • 70. YQL <execute> extends Open Data Tables with server-side code access APIs that require authentication Netflix OAuth, FlickrAuth, Google AuthSub join data across services grab New York Times article tags and generate find associated flickr photos combine multiple searches into a single result: twitter, web, news and image
  • 71. YQL <execute> augment data: city/state to APIs that just return zip code create APIs from web page celebrity birthdays scraped from imdb, caltrain data transformation convert the result from xml to Google's kml format move business logic of your application to the cloud
  • 72. <execute> element Javascript server-side scripting No DOM, events etc, pure JS scripting E4X support - XML literals, filtering ... YQL no longer performs a GET request to the table binding URL YQL provides additional useful global objects request, response, y.rest, y.include, y.query... execute tag must return the data that will be the output of the YQL select
  • 73. hello world <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> <meta> <sampleQuery>select * from {table} where a='cat' and b='dog';</sampleQuery> </meta> <bindings> <select itemPath="" produces="XML"> <urls><url>http://fake.url/{a}</url></urls> <inputs> <key id='a' type='xs:string' paramType='path' required="true" /> <key id='b' type='xs:string' paramType='variable' required="true" /> </inputs> <execute><![CDATA[ // Your javascript goes here. We will run it on our servers response.object = <item> <url>{request.url}</url> <a>{a}</a> <b>{b}</b> </item>; ]]></execute> </select> </bindings> </table>
  • 74. Scraping a page <select produces="XML" itemPath="deals.deal"> <urls><url>http://deals.yahoo.com</url></urls> <execute><![CDATA[ var dealhtml = y.query("select * from html where url='http://deals.yahoo.com' and xpath='// div[contains(@class, "product-display")]'").results; var deals = <deals/>; function compress(object) { if (!object) return ""; return object.toString().replace(/s+/, " ") } for each (var div in dealhtml.div) { var deal = <deal/>; deal.name += <name>{compress(div.h3.a.text())}</name>; deal.link += <link>{div.div[0].a.@href}</link>; … deal.description += <description>{compress(div.p[0].*)}</description>; deal.logo += <logo>{compress(div.div[1].*)}</logo>; deals.deal += deal; } response.object = deals; ]]></execute> </select>
  • 75. Inner join (unified web+image search) <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> <bindings> <select itemPath="results.result" produces="XML"> <inputs> <key id="query" type="xs:string" paramType="query" required="true"/> </inputs> <execute><![CDATA[ var qs = query; var search = y.query('select * from search.web(50) where query=@query', {query: qs}).results; var images = []; default xml namespace='http://www.inktomi.com/'; for each (var result in search.result) { images.push(y.query('select * from search.images(1) where query=@query and url=@url', {url:result.url, query:qs})); } var i = 0; for each (var result in search.result) { var image = images[i++].results.result; if (image) { result.image = <image>{image}</image>; } } response.object = search; ]]></execute> </select> </bindings> </table>
  • 76. Authentication: Search Netflix catalog <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd" https="true"> <meta>...</meta> <bindings> <select itemPath="" produces="XML" > <urls><url env="all">http://api.netflix.com/catalog/titles/</url></urls> <paging model="offset"> <start id="start_index" default="0" /> <pagesize id="max_results" max="100" /> <total default="10" /> </paging> <inputs> <key id="term" type="xs:string" paramType="query" required="true" /> <key id="ck" type="xs:string" paramType="variable" required="true" /> <key id="cks" type="xs:string" paramType="variable" required="true" /> </inputs> <execute><![CDATA[ // Include the OAuth libraries from oauth.net y.include("http://oauth.googlecode.com/svn/code/javascript/oauth.js"); y.include("http://oauth.googlecode.com/svn/code/javascript/sha1.js"); // Collect all the parameters var encodedurl = request.url; var accessor = { consumerSecret: cks, tokenSecret: ""}; var message = { action: encodedurl, method: "GET", parameters: [["oauth_consumer_key",ck],["oauth_version","1.0"]]}; OAuth.setTimestampAndNonce(message); // Sign the request OAuth.SignatureMethod.sign(message, accessor); try { // get the content from service along with the OAuth header, and return the result back out response.object = request.contentType('application/xml').header("Authorization", OAuth.getAuthorizationHeader("netflix.com", message.parameters)).get().response; } catch(err) { response.object = {'result':'failure', 'error': err}; } ]]></execute> </select> </bindings> </table>
  • 77. select * from twitter.status where id="2108869549" and username="xxx" and password="yyy" <select itemPath="" produces="XML"> <urls><url>http://twitter.com/statuses/show/{id}.xml</url></urls> <inputs> <key id="username" type="xs:string" required="false" paramType="variable"/> <key id="password" type="xs:string" required="false" paramType="variable"/> <key id="id" type="xs:integer" required="true" paramType="path"/> </inputs> <execute><![CDATA[ var r = null; if (username && password) { y.include("http://yqlblog.net/samples/base64.js"); var authheader = "Basic "+Base64.encode(username+":"+password); r = request.header("Authorization",authheader).get().response; } else { r = request.get().response; } response.object = r; ]]></execute> </select>
  • 78. insert into twitter.status (status,username,password) values ("new tweet from YQL",”xxx”,”yyy”); <insert itemPath="" produces="XML"> <urls> <url>http://twitter.com/statuses/update.xml</url> </urls> <inputs> <value id="username" type="xs:string" required="true" paramType="variable"/> <value id="password" type="xs:string" required="true" paramType="variable"/> <value id="status" type="xs:string" required="true" paramType="variable"/> </inputs> <execute><![CDATA[ y.include("http://yqlblog.net/samples/base64.js"); var authheader = "Basic "+Base64.encode(username+":"+password); var content = "status="+status; response.object = request.header("Authorization",authheader).post(content).response; ]]></execute> </insert>
  • 79. delete from twitter.status where id="2108869549" and username="xxx" and password="yyy" <delete itemPath="" produces="XML"> <urls> <url>http://twitter.com/statuses/destroy/{id}.xml</url> </urls> <inputs> <key id="username" type="xs:string" required="true" paramType="variable"/> <key id="password" type="xs:string" required="true" paramType="variable"/> <key id="id" type="xs:string" required="true" paramType="path"/> </inputs> <execute><![CDATA[ y.include("http://yqlblog.net/samples/base64.js"); var authheader = "Basic "+Base64.encode(username+":"+password); response.object = request.header("Authorization",authheader).del().response; ]]></execute> </delete>
  • 80. Conclusion More easily build applications fewer lines of code data processing done away from app consistent and familiar syntax for all data access iterative environment for developing the query
  • 81. Conclusion build applications that run faster service in the cloud does the work conversion, filtering, parallel requests... with smaller network footprint fewer (client) calls smaller data amounts closer to the data, fatter pipes
  • 82. data
  • 83. YQL select * from internet http://developer.yahoo.com/yql Jonathan Trevor yql-questions@yahoo-inc.com

Notas do Editor

  1. - You get data from various webservices across the internet. - Now lets take an example of a developer building the housingmaps mashup
  2. Lets take an example of a developer trying
  3. Lets take an example of a developer trying
  4. Lets take an example of a developer trying
  5. Lets take an example of a developer trying
  6. Lets take an example of a developer trying
  7. Lets take an example of a developer trying
  8. Lets take an example of a developer trying
  9. Lets take an example of a developer trying
  10. Lets take an example of a developer trying
  11. Lets take an example of a developer trying
  12. Lets take an example of a developer trying
  13. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.
  14. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.
  15. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.
  16. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.
  17. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.
  18. - How do you YQLize a webservice? - Bindings - - Schema defines a way to map the YQL Compiler Service to the WebService Endpoint - Keys can either be path, query or matrix parameters. - They can be marked required or optional.