1 / 68

Yahoo! Query Language ( Web Service)

Yahoo! Query Language ( Web Service). Peter Pij ák Róbert Šišaj 15.12.2009. Osnova. Jazyk Yahoo! Query Language konštrukcie zdroje dát Yahoo! Query Language Web Service použitie prístup. Motivácia - Čo je YQL WS?. Internet mnoho služieb rôzne rozhrania

everly
Download Presentation

Yahoo! Query Language ( Web Service)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Yahoo! Query Language(Web Service) • Peter Piják • Róbert Šišaj • 15.12.2009

  2. Osnova • Jazyk Yahoo! Query Language • konštrukcie • zdroje dát • Yahoo! Query Language Web Service • použitie • prístup

  3. Motivácia - Čo je YQL WS? • Internet • mnoho služieb • rôzne rozhrania • Yahoo! Query Language Web Service (YQL WS) • sprístupniť dáta služieb Yahoo! a iných z Internetu • jedno rozhranie • Jazyk YQL • jednoduchá syntax SQL • Demonštratívny dotaz • SELECT * FROM internet (…)

  4. Možnosti YQL WS • Preddefinované tabuľky • Yahoo! osobný účet • Yahoo! služby a siete: Search, Flickr, Social, MyBlogLog • Tabuľky rozšíriteľné • Open Data tables • ľubovoľná iná služba • Formát • vstup: HTML, XML, JSON, RSS, Atom • výstup: XML, JSON (JavaScript Object Notation)

  5. Ukážkový dotaz • Dotaz • SELECT givenName, familyNameFROM social.profile WHERE guid=me • Výsledok • <results><profile xmlns=…> <givenName>Peter</givenName><familyName>Piják</familyName></profile></results>

  6. Prístup k YQL WS • YQL Console • interaktívne prostredie • http://developer.yahoo.com/yql/console • HTTP dotaz • http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM social.profile WHERE guid=me • Yahoo! PHP SDK • webové aplikácie

  7. Prístup cez YQL Console • http://developer.yahoo.com/yql/console • Dotazy • vloženie, výsledok, predchádzajúce dotazy • prevod na http dotaz • Zoznam tabuliek • Príklady dotazov

  8. Prístup cez HTTP • Príklad • SELECT * FROM geo.places WHERE text=“prague“ • http://query.yahooapis.com/v1/ public/yql?q=select * from geo.places where text=%22prague%22

  9. Prístup cez HTTP • Adresy URL podľa potreby autorizácie • http://query.yahooapis.com/v1/public/yql?[query] • http://query.yahooapis.com/v1/yql?[query] • pre tabuľky vyžadujúce autentifikáciu • Parametre [query] • príklad: q=[yql_query]&format=xml

  10. Prístup cez HTTP • HTTP protokol • dotaz: • GET / HTTP/1.1Host: www.cuni.cz • definovaných 8 metód: • HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT • Pre dotaz v YQL • SELECT dotaz používa GET • INSERT –– PUT • UPDATE –– POST • DELETE –– DELETE

  11. Yahoo! PHP SDK • Knižnica PHP od Yahoo! • trieda YahooSession, pre YQL dotaz metóda query <?php require("Yahoo.inc"); $session = YahooSession::requireSession (USER_KEY, USER_SECRET, APPLICATION_ID);$query = sprintf(“SELECT * FROM geo.places WHERE text='ballard';“);$response = $session->query($query);print_r($response);?>

  12. Nesprávny dotaz • Syntakticky alebo sémanticky nesprávny dotaz • SELECT * FROMm social.profile WHERE guid=me • <error xmlns:yahoo=... > <description>Syntax error(s) [line 1:9 missing FROM at 'FROMm'] </description></error> • SELECT * FROM abc • <error xmlns:yahoo=... ><description>No definition found for Table abc</description></error>

  13. SELECT • Dáta z YQL tabuliek alebo web. služieb • Syntax • SELECT cols FROM table WHERE filter [| function] • cols –– polia / stĺpce na výstup • table –– YQL tabuľka • filter –– filtrovanie záznamov • function –– funkcia upravujúca poradie (sort) • Pozn.: nezáleží na veľkosti písmen • Vracia dáta v XML alebo JSON formáte • riadok –– XML element / JSON objekt • stĺpec –– podelement / podobjekt

  14. SELECT, vstupné polia • Čiarkou oddelené polia (stĺpce) alebo hviezdička • SELECT * FROM social.profile WHERE guid=me • <profile ...>... <birthdate>...</birthdate>... <givenName>Peter</givenName>... <image> <imageUrl>...</imageUrl><size>...</size> </image>... <location>Zilina, Zilinsky</location>... <status>...</status></profile>

  15. SELECT, vstupné polia • Prístup k podelementom bodkou • z elementu image iba imageUrl • SELECT givenName, image.imageUrlFROM social.profile WHERE guid=me • <profile ...> <givenName>Peter</givenName> <image> <imageUrl>http:...</imageUrl> </image></profile>

  16. Filtrovanie záznamov • Dotaz • SELECT * FROM flickr.photos.searchWHERE text='Barcelona' • Typy filtrov • vzdialené • lokálne

  17. Vzdialené filtrovanie • YQL WS • preloží podmienku do tvaru vzdialenej služby • Filtrovanie záznamov vo vzdialenej službe • dotaz v tvare • input_key=literal • alebo kombinácia OR • Príklad • SELECT * FROM flickr.photos.infoWHERE photo_id='2186714153' • preklad na: • http://api.flickr.com/services/rest/?method=flickr.photos.get-Info&photo_id='2186714153'

  18. Vzdialené filtrovanie, príklad • Vyhľadávanie cez Yahoo! Search • Dotaz • SELECT url FROM search.webWHERE query='univerzita praha' • http://query.yahooapis.com/v1/public/yql?q=select%20url%20from%20search.web%20where%20query%3D'univerzita%20praha'

  19. Lokálne filtrovanie • YQL WS preberá všetky dáta, filtruje ich • Príklad • SELECT * FROM search.webWHERE query='univerzita praha'AND title LIKE '%metr%' • query –– vzdialene • title –– lokálne • Syntax: • field comp_operator literal • operátory: =, !=, >, <, >=, <=,IN (values), [NOT] LIKE (pattern), [NOT] MATCHES (pattern), IS [NOT] NULL • alebo kombinácia AND a OR

  20. Spájanie tabuliek • Spojenie rôznych tabuliek / rôznych služieb • Pomocou zhodnosti hodnôt • Spojenie – operátor IN a sub-dotaz • Dotaz • SELECT * FROM search.webWHERE queryIN(SELECT title FROM rss WHERE url="http://rss.news.yahoo.com/rss/topstories" | truncate(count=1))

  21. Spájanie tabuliek • Vnútorný dotaz • SELECT title FROM rssWHERE url= "..."| truncate(count=1) • <item><title>Senate to vote on $1.1 trillion spending bill</title></item> • Celkový výsledok • <results> <result xmlns="..."><title> <![CDATA[FOXNews.com - <b>Senate</b> Poised to Advance $1.1T <b>Spending</b> <b>Bill</b>]]> </title></result> <result ... /></results>

  22. Spájanie tabuliek, viacnásobný kľúč • Vnútorný dotaz • SELECT * FROM local.search WHERE (latitude,longitude) IN (SELECT centroid.latitude, centroid.longitude FROM geo.places WHERE text="north beach, san francisco" ) AND radius=1 AND query="pizza"

  23. Spájanie tabuliek, viac subdotazov • Vnorenie subdotazov, povolené • SELECT * FROM search.siteexplorer.pagesWHERE query IN (SELECT url FROM search.web WHERE query IN (SELECT Artist.name FROM music.release.popular LIMIT 1) LIMIT 1) • Viacnásobné subdotazy s operátorom IN nepovolené • SELECT * FROM flickr.photos.searchWHERE lat IN (SELECT centroid.latitude FROM geo.places WHERE text="sfo") AND lon IN (SELECT centroid.longitude FROM geo.places WHERE text="sfo") • Only a single subselect with a key field is allowed in a branch.

  24. SELECT, obmedzenie kapacity dát • Obmedzenia • Maximálny počet vrátených riadkov 5000 • Maximálny výpočtový čas 30 sekúnd • Obmedzenia vzdialenej služby • obmedzenia za tabuľkou:SELECT columns FROM table [([offset, ]count)] • count – počet, offset – začiatočný záznam • SELECT title FROM search.web (10, 30)WHERE query="pizza" • predvolené (0, 10) • bez obmedzenia (0)

  25. SELECT, obmedzenie kapacity dát • Obmedzenia YQL WS služby • SELECT columns FROM tableWHERE condition[LIMIT limit [OFFSET offset]] • predvolené LIMIT 10, OFFSET 0 • Obmedzenia vzdialenej služby a lokálnej služby je možné kombinovať

  26. Triediace a iné funkcie • Syntax • SELECT columns FROM table (| function)* • Príklad: • SELECT name, centroid.latitudeFROM geo.placesWHERE text="victoria"| SORT (field='centroid.latitude') • <place><name>Victoria</name><centroid><latitude>36.558651</...></...></place><place><name>Vitoria</name><centroid><latitude>20.294210</...></...></place>

  27. Triediace a iné funkcie • Syntax • SELECT columns FROM table (| function)* • sanitize - prevedie znaky na HTML entity

  28. Extrahovanie HTML obsahu • Obsah web. stránky • SELECT * FROM htmlWHERE url="http://www.mff.cuni.cz“ • <results><body lang="en"><div id="outer"><a id="top" name="top"/><div id="contain-all"> <div id="logo"><img alt=““ src="..."/> ...</body></results>

  29. Extrahovanie HTML obsahu, XPath • Extrahovanie pomocou XPath • SELECT * FROM htmlWHERE url="http://www.mff.cuni.cz“ANDxpath='//h1[@id="faculty"]' • <results><h1 id="faculty">Faculty of Mathematics and Physics</h1></results>

  30. Nápoveda k tabuľke • Dotaz • DESC table_name • Príklad • DESC html • <table name="html" security="ANY"> <meta> <sampleQuery>select * from html where url="http://finance.yahoo.com/q?s=yhoo" and xpath='//div[@id="yfi_headlines"]/div[2]/ul/li/a' </sampleQuery> </meta> <request> <select> <key name="browser" type="xs:boolean"/> <key name="charset" type="xs:string"/> <key name="url" required="true" type="xs:string"/> <key default="/html/body" name="xpath" type="xs:string"/> </select> </request></table>

  31. I/U/D dotazy • I/U/D –– INSERT, UPDATE, DELETE • Ale • nie je možné pri každej tabuľke • nutná autentifikácia

  32. INSERT • Syntax • INSERT INTO (table) (list_of_columns)VALUES (list_of_values) • Príklad • ... (vysvetlené neskôr)INSERT INTO bitly.shorten(login, apiKey, longUrl)VALUES('YOUR_LOGIN', 'YOUR_API_KEY','http://yahoo.com')

  33. DELETE • Syntax • DELETE FROM table_name WHERE filter • Príklad • DELETE FROM twittertableWHERE tweetid="12345"AND username="twitter_username" AND password="twitter_password"

  34. UPDATE • Syntax • UPDATE table SET field = value WHERE filter • Príklad • UPDATE social.profile.statusSET status="Prednáška"WHERE guid=me • http://profiles.yahoo.com

  35. Open Data Tables • Definícia ODT • Sprístupnenie ODT v YQL • Nastavenie kľúčových hodnôt pre ODT • Zabezpečenie ODT a kontrola prístupu • Dávkové spracovanie volaní • Debuggovanie ODT a YQL

  36. Definícia ODT • ODT je definovaná pomocou XML súboru • root element <table> obsahuje atribúty • xmlns - odkaz na XML schému • securityLevel - určuje autorizáciu potrebnú pre prístup • východzia hodnota 'any' - anonymný prístup (bez obmedzenia) • https - ak je true, tabuľka je prístupná len cez HTTPS, v opačnom prípade je prístupná cez HTTP i HTTPS • ak tabuľka vyžaduje citlivé údaje (heslo, autentifikačný kľúč, ...), je HTTPS nutnosťou • <meta> element poskytuje doplňujúce informácie k tabuľke • sampleQuery - vzorový dotaz (1 alebo viac) • description • author

  37. Definícia ODT • element select (insert, update, delete) • nachádzajú sa v elemente <bindings>, definujú prístup k zdrojom z externých webových služieb • element <select> definuje, ako má YQL čítať dáta z WS • itemPath - definuje 'riadok' tabuľky, opakujúci sa element v odpovedi z API, používa sa '.' notácia • feed.entry, root.station • JSON na rozdiel od XML nemá root element, preto YQL vytvorí 'pseudo' root element nazvaný 'json' • produces - typ dát z WS • <url> element označuje zdroj, odkiaľ YQL čerpá dáta pre tabuľku • <key> element - označuje pomenovaný kľúč, ktorý YQL berie z klauzule WHERE (pri SELECTe) a doplní ho do URL - až potom odošle požiadavok do WS

  38. Definícia ODT - príklad • <?xml version="1.0" encoding="UTF-8"?> • <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> • <meta> • <author>You</author> • <documentationURL>None</documentationURL> • <description>Uses the Google Base feed search</description> • <sampleQuery>SELECT * FROM {table} WHERE brand = "Canon"</sampleQuery> • </meta> • <bindings> • <select itemPath="feed.entry" produces="XML"> • <urls> • <url>http://www.google.com/base/feeds/snippets</url> • </urls> • <inputs> • <key id="bq" type="xs:string" paramType="query"/> • </inputs> • </select> • </bindings> • </table>

  39. Definícia ODT - príklad • odkaz na popis schémy tabuľky <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> • meta informácie <meta> <author>You</author> <documentationURL>None</documentationURL> <description>Uses the Google Base feed search</description> • vzorový dotaz • {table} zastupuje názov tabuľky, vzorový odkaz bude fungovať aj keď si užívateľ tabuľku premenuje <sampleQuery>SELECT * FROM {table} WHERE brand = "Canon" </sampleQuery> </meta>

  40. Definícia ODT - príklad • definícia zdrojových dát pre tabuľku <bindings> <select itemPath="feed.entry" produces="XML"> • zdrojová webová služba <urls> <url>http://www.google.com/base/feeds/snippets</url> </urls> • definícia kľúča, ktorým možno preniesť hodnotu z WHERE klauzule SELECTu až do zdrojovej URL <inputs> <key id="bq" type="xs:string" paramType="query"/> </inputs> </select> </bindings> </table>

  41. Definícia ODT - príklad • Dotaz s použitím kľúča SELECT title,price,brand FROM {table} WHERE bq = "digital+camera" AND brand LIKE "%Canon%" • YQL použije kľúč pri získavaní dát z webovej služby http://www.google.com/base/feeds/snippets?bq=digital+camera • Výsledné dáta spracuje a vráti len výsledky, kde element brand obsahuje podslovo Canon <entry> <title type="text">Canon EOS 5D Mark II Digital Camera (Body only)</title> <g:price type="floatUnit">2699.95 usd</g:price> <g:brand type="text">Canon</g:brand> </entry>

  42. Sprístupnenie ODT v YQL • Príkaz USE importuje definíciu ODT USE 'http://myserver.com/mytables.xml' AS mytable; • Ak vynecháme kľúčové slovo AS, YQL použije názov súboru (bez .xml prípony) na pomenovanie tabuľky • Definícia tabuľky musí odpovedať schéme • http://query.yahooapis.com/v1/schema/table.xsd • Následne sa môžeme dotazovať SELECT * FROM mytable WHERE... • Vhodné sprístupniť potrebné ODT v súbore s príponou .env http://developer.yahoo.com/yql/console/?env=http://datatables.org/alltables.env • typicky obsahuje príkazy USE a SET

  43. Nastavenie kľúčových hodnôt pre ODT • Dôležité kľúče (password, API kľúč, ...) je možné nastaviť nezávisle od YQL príkazov (tieto kľúče musí ODT definovať) SELECT * FROM guardian.content.search WHERE api_key="1234567890" AND q='environment' • Nastavenie kľúča api_key: SET api_key="1234567890" ON guardian; SELECT * FROM guardian.content.search WHERE query="environment"

  44. Nastavenie kľúčových hodnôt pre ODT • Explicitne uvedená kľúčová hodnota v YQL príkaze má prednosť pred hodnotou nastavenou pomocou SET • Ak je hodnota nastavená viackrát, prednosť má najviac upresňujúca definícia – merané dĺžkou prefixu tabuľky • Ak je hodnota nastavená viackrát rovnako upresňujúcou definíciou, použije sa posledná definícia

  45. Nastavenie kľúčových hodnôt pre ODT • Príklad súboru .env USE "http://www.ms.mff.cuni.cz/~sisar4am/bart.xml" AS bart_table; USE "http://www.ms.mff.cuni.cz/~sisar4am/google.xml" AS google_base_table; SET bq="digital+camera" ON google_base_table;

  46. Príklad I • Dotaz s využitím prednastaveného kľúča pomocou SET http://query.yahooapis.com/v1/public/yql?env=http://www.ms.mff.cuni.cz/~sisar4am/my.env&q=SELECT title,brand,target_country,price FROM google_base_table&format=xml • Výsledok <diagnostics> ... <url execution-time="235" proxy="DEFAULT"> http://www.google.com/base/feeds/snippets?bq=digital%2bcamera</url> ... </diagnostics> <results> <entry> <title type="text">Canon EOS 5D Mark II Digital Camera (Body only)</title> <g:price type="floatUnit">2699.95 usd</g:price> <g:target_country type="text">US</g:target_country> <g:brand type="text">Canon</g:brand> </entry>

  47. Príklad II • Dotaz http://query.yahooapis.com/v1/public/yql?env=http://www.ms.mff.cuni.cz/~sisar4am/my.env&q=SELECT title,brand,target_country,price FROM google_base_table WHERE bq = "digital+camera+europe"&format=xml • Výsledok <entry> <title type="text"> Hewlett Packard C8452-60002 C315 Digital Camera (Europe Only)</title> <g:price type="floatUnit">656.95 usd</g:price> <g:target_country type="text">US</g:target_country> <g:brand type="text">Hewlett Packard</g:brand> </entry>

  48. Príklad II • <entry> • <title type="text"> • Hewlett Packard Q2154-69001 EXCH120 Digital Camera-Europe Order Only</title> • <g:price type="floatUnit">501.95 usd</g:price> • <g:target_country type="text">US</g:target_country> • <g:brand type="text">Hewlett Packard</g:brand> • </entry> • ... • <entry> • <title type="text"> • HP Hewlett Packard Q2154-60100 New Q215460100 PhotoSmart 120 Digital Camera - Europe only</title> • <g:price type="floatUnit">222.52 gbp</g:price> • <g:target_country type="text">GB</g:target_country> • <g:brand type="text">HP Hewlett Packard</g:brand> • </entry>

  49. Zabezpečenie ODT a kontrola prístupu • Využíva sa otvorený protokol OAuth

More Related