Yahoo! Blueprint is an open mobile platform for building rich mobile applications and sites. It uses a lightweight XML language called Blueprint that allows declarative programming without scripting. Developers can create Blueprint widgets, apps, and sites that work across many mobile devices and platforms. The document provides an overview of Blueprint and walks through the steps to develop, test, package and publish a mobile widget using the Blueprint platform.
41. BLUEPRINT the mobile platform
Yahoo! Blueprint Apps 3rd Party Blueprint Apps
Blueprint language specification
Infrastructure Runtimes SDK
Gallery Yahoo! Go Developer Tools
Monetization Mobile Apps Reference
Analytics Mobile Sites Tutorials
43. BP is the platform
• XML
• XForms
• UED Patterns
• Device Services
Blueprint Language
44. BP is the platform
• XML
• XForms
• UED Patterns
• Device Services
Blueprint Language
HTML J2ME S60 WinMob iPhone (Android)
Blueprint Renderers
45. BP is the platform
• XML
• XForms
• UED Patterns
• Device Services
Blueprint Language
Native
HTML J2ME S60 WinMob iPhone (Android)
Blueprint Renderers
46. Blueprint widgets
GO
integrated into the client
included in the Gallery
can be added to Carousel
reach millions of users
47. Blueprint widgets
GO
integrated into the client
included in the Gallery
can be added to Carousel
reach millions of users
available today
48. Blueprint apps new
Java, Windows Mobile
& Symbian devices
standalone application
freely distribute
runs on 100s of devices
49. Blueprint apps new
Java, Windows Mobile
& Symbian devices
standalone application
freely distribute
runs on 100s of devices
developer preview now
commercial release later
50. Blueprint sites new
xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
51. Blueprint sites new
xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
52. Blueprint sites new
xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
53. Blueprint sites new
xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
62. I want to build stuff. Today.
• Platform Overview
• Blueprint Language Concept
• Steps to (Widget-) Success
BLUEPRINT
63. BLUEPRINT the mobile platform
Yahoo! Blueprint Apps 3rd Party Blueprint Apps
Blueprint language specification
Infrastructure Runtimes SDK
Gallery Yahoo! Go Developer Tools
Monetization Mobile Apps Reference
Analytics Mobile Sites Tutorials
66. Blueprint Language: What’s that exactly?
XML mark-up language, based on X-Forms
No scripting or procedural code
BLUEPRINT
67. Blueprint Language: What’s that exactly?
XML mark-up language, based on X-Forms
No scripting or procedural code
Provides rich mobile core features and services
BLUEPRINT
68. Blueprint Language: What’s that exactly?
XML mark-up language, based on X-Forms
No scripting or procedural code
Provides rich mobile core features and services
EASY!
BLUEPRINT
70. Blueprint XML: Create a Map!
<map>
<center>
<latitude>37.3919</latitude>
<longitude>-122.0302</longitude>
</center>
<map-zoom>6</map-zoom>
<map-mode>map</map-mode>
<map-showtraffic>false</map-showtraffic>
<map-point>
<location>
<latitude>37.392916</latitude>
<longitude>-122.033934</longitude>
<street>810 Del Rey Ave</street>
<city>Sunnyvale</city>
<state>CA</state>
<zip></zip>
</location>
</map-point>
</map>
BLUEPRINT
71. Blueprint Control: Location
<location-chooser ref=quot;originquot;>
<label>From:</label>
</location-chooser>
<location-chooser ref=quot;destinationquot;>
<label>To:</label>
</location-chooser>
Supports GPS
or Cell ID:
Find Me
Does not have GPS or
Cell ID Information
BLUEPRINT
75. Creating Blueprint Services: What do I need?
Any web-server
Use any scripting language
Use any existing publishing tools
BLUEPRINT
76. Creating Blueprint Services: What do I need?
Any web-server
Use any scripting language
Use any existing publishing tools
Return Blueprint!
BLUEPRINT
78. Building Mobile Widget
Download the Blueprint SDK
1
Blueprint SDK includes
• Blueprint Documentation
• XML Schema definitions
• Templates to get started
• Mobile Widget Sample Code
• PHP helper class (blueprint.php)
BLUEPRINT
79. Building Mobile Widget
Develop your Widget
2
Widget Request HTTP Request
Yahoo! Server
Widget Content Blueprint (XML)
Your
Web Server
Widget
Submission
Application
Package
BLUEPRINT
80. Building Mobile Widget
Develop your Widget
2
Widget Request HTTP Request
Yahoo! Server
Widget Content Blueprint (XML)
Your
Web Server
2. Create static/
dynamic pages
Widget
to return
Submission 2
Blueprint
Application
Package
BLUEPRINT
81. Building Mobile Widget
Develop your Widget
2
Widget Request HTTP Request
Yahoo! Server
Widget Content Blueprint (XML)
Your
Web Server
2. Create static/
dynamic pages
Widget
to return
Submission 2
Blueprint
3. Create your
Application
application
Package
package and
submit
3
BLUEPRINT
82. Building Mobile Widget
Data flow
Mobile Phone Yahoo! Server Your Server
Request entry point
User opens HTTP request to Widget publisher
Widget URI specified in config.xml
Includes language and location headers
Blueprint page returned
Includes Content-Type header; may include
cache-control headers; may include cookies
for Widget publisher
(Cookies stored on Yahoo!
Widget content returned server)
User requests
new data Request new content
HTTP request …
BLUEPRINT
83. Building Mobile Widget
Interfacing with Yahoo! Servers
Content Type for Blueprint Services:
Content-Type: application/x-ywidget+xml
Use only the UTF-8 character set.
Using Cookies:
Your server can set/retrieve cookies exactly as if you are serving HTML instead of Blueprint
markup.
The cookies are stored on Yahoo! servers
Cache Control:
Wherever possible, Blueprint pages are cached on the user’s device. To control caching, use
the following standard HTTP headers when serving pages: Cache-Control, ETag, and If-
None-Match. Only these headers affect caching
BLUEPRINT
84. Building Mobile Widget
Interfacing with Yahoo! Servers
Internationalization and Localization:
When Yahoo! Mobile application server sends a page request, the request may contain
several HTTP headers, including:
Accept-Language
RFC 4646/4647 language code
(Example: Accept-Language: en-US)
Geo-Country
ISO 3166 country or UN M.49 region code
(Example: Geo-Country: CA)
You can use the information in the headers to decide what content to return.
BLUEPRINT
85. Building Mobile Widget
Package your Widget
3
Application Package is a zip file
containing
• config.xml
• Application metadata, including the URL for
your web server
• gallery.xml
• Information for the widget gallery
• Image Files
• Includes icons and screen shots (for the
gallery)
BLUEPRINT
86. Building Mobile Widget
Upload your mobile Widget
4
• http://mobile.yahoo.com/developers/test/upload
• Package the widget files into a zip archive
• Upload the .zip file
BLUEPRINT
87. Building Mobile Widget
Test your mobile Widget
5
1. Yahoo! Go Emulator: http://mobile.yahoo.com/go/tryit
(Note: External links won’t work)
2. Browser http://devtest.m.yahoo.com
(Note: GPS and cell-ID won’t work on desktop browser)
BLUEPRINT
88. Building Mobile Widget
Publish your mobile Widget
6
• http://mobile.yahoo.com/developers/submit/upload
• Please test your widget before publishing
• It may take 1 week for the approval process
BLUEPRINT
89. Widgets Development Process Summary
Download the Blueprint SDK
1
Develop your Widget
2
Package your Widget
3
Upload your mobile Widget
4
Test your mobile Widget
5
Publish your mobile Widget
6
BLUEPRINT
91. Links & Support
Get the SDK
• Download the SDK
http://mobile.yahoo.com/developers/download
Get Help!
• Yahoo! Tech Group
http://tech.groups.yahoo.com/group/yhoomobiledevelopers
• Read the Blueprint Blog
http://mobile.yahoo.net/developer/blog
BLUEPRINT
94. Web Sites Applications
Document Centric Task Centric
Content Syndication Native Look & Feel
Biased to Layout Richer Experience
Content
Connectivity Optional
Link Navigation
Browser Native Functionality
BLUEPRINT
95. Internet as a Platform
Structured Experiences
High Level Controls
Stateless
MVC Patterns
Streamed Pages Asynchronous Requests
XForms and XPath
oh my!
Maps Embedded Web Content
Blueprint Renderer
Native Applications
Location Service Image Transcoding
Yahoo! Services
Slideshows Seamless Search Results
Video Transcoding Voice Recognition
Authentication Advanced Input Controls
Core Control
Photo Acquisition Scaled Hosting
Language
BLUEPRINT
96. On Demand Service Updates
Let’s retain the
benefits of streamed
experiences
Organically add features
Roll out new services
Serve up seasonal content
BLUEPRINT
97. Aggregated Services
Let’s reuse services already
implemented and tested
by Yahoo!
...or anyone serving up
Blueprint pages.
BLUEPRINT
128. How to get data to
SearchMonkey? Humans see:
• name
• picture of a person
• current job
• industry, …
Computers see:
an undifferentiated
blob of HTML
Can we make
computers
smarter?
132. How does it Work?
Acme.com’s Site
Acme.com’s DB
133. How does it Work?
site owners/publishers share structured data with Yahoo!
1
Acme.com’s Site
Acme.com’s DB
134. How does it Work?
site owners/publishers share structured data with Yahoo!
1
RDF/Microformat Markup
Acme.com’s Site
Index
Acme.com’s DB
135. How does it Work?
site owners/publishers share structured data with Yahoo!
1
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Acme.com’s DB
136. How does it Work?
site owners/publishers share structured data with Yahoo!
1
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Acme.com’s DB
137. How does it Work?
site owners/publishers share structured data with Yahoo!
1
Page Extraction
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Acme.com’s DB
138. How does it Work?
site owners/publishers share structured data with Yahoo!
1
Page Extraction
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Web Services
Acme.com’s DB
139. How does it Work?
site owners/publishers share structured data with Yahoo!
1
site owners & third-party developers build SearchMonkey apps
2
Page Extraction
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Web Services
Acme.com’s DB
140. How does it Work?
site owners/publishers share structured data with Yahoo!
1
site owners & third-party developers build SearchMonkey apps
2
consumers customize their search experience with Enhanced Results or Infobars
3
Page Extraction
RDF/Microformat Markup
Acme.com’s Site
Index
DataRSS feed
Web Services
Acme.com’s DB
141. Data Sources: RDF and Microformats
Name Cached Open Mode Notes
Yahoo! Index yes yes Passive Old-School Y! Index data
RDFa, eRDF yes yes Passive Vocab + markup decoupled
Microformats yes yes Passive Vocab + markup coupled
DataRSS feed yes no Active Atom + metadata
XSLT no no Active Good for prototyping
Web Service no no Active Brings in remote data
142. Approach #1: Embedded RDF
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML+RDFa 1.0//EN”
quot;http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtdquot;>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:dc=http://purl.org/dc/elements/1.1/
xmlns:foaf=http://xmlns.com/foaf/0.1/
•Cached data
lang=quot;enquot; xml:lang=quot;enquot;>
<head>
•allows Enhanced Results
<title>The Amazing Home Page of Joe Smith</title>
</head>
•but not for dynamic data
<body>
<h1 property=quot;dc:titlequot;>Joe's Home Page</h1>
• Reuse existing markup
<div rel=quot;foaf:makerquot;>
<h2 property=quot;foaf:namequot;>Joe Smith</h2>
<div rel=quot;foaf:depictionquot;
• but requires site redesign
resource=quot;http://joesmith.org/images/jsmith.pngquot;>
<img src=quot;/images/jsmith.pngquot;
• Open approach
alt=quot;Smiling headshot of Joequot; />
<p property=quot;dc:rightsquot;>Creative Commons
• everyone can use
Attribution 3.0 Unported</p>
</div>
• Passive, crawled by Y!
</div>
…
• less bureaucracy to set up
143. Approach #2: Embedded
Microformats
<div id=quot;hcard-Joe-Smithquot; class=quot;vcardquot;>
<span class=quot;fnquot;>Joe Smith</span>
<div class=quot;adrquot;>
<div class=quot;street-addressquot;>123 Murphy Avenue</div>
<span class=quot;localityquot;>Sunnyvale</span>,
• Cached data
<span class=quot;regionquot;>California</span>
<span class=quot;postal-codequot;>94086</span>
• allows Enhanced Results
</div>
• but not for dynamic data
<div class=quot;telquot;>(408) 555-1234</div>
</div>…
• Reuse existing markup
• but requires site redesign
• Open approach
• everyone can use
• Passive, crawled by Y!
• less bureaucracy to set up
144. Data Sources: DataRSS Feed
Name Cached Open Mode Notes
Yahoo! Index yes yes Passive Old-School Y! Index data
RDFa, eRDF yes yes Passive Vocab + markup decoupled
Microformats yes yes Passive Vocab + markup coupled
DataRSS feed yes no Active Atom + metadata
XSLT no no Active Good for prototyping
Web Service no no Active Brings in remote data
145. Approach #3: DataRSS Feed
<?profile http://search.yahoo.com/searchmonkey-profile ?>
<feed xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot;
xsi:schemaLocation=quot;http://www.w3.org/2005/Atom ../xsd/datarss.xsdquot;
xmlns:dc=quot;http://purl.org/dc/terms/” xmlns=quot;http://www.w3.org/2005/Atomquot;
• Cached data
xmlns:commerce=quot;http://search.yahoo.com/searchmonkey/commerce/quot;
xmlns:y=quot;http://search.yahoo.com/datarss/quot;>
• allows Enhanced Results
<id>http://local.yahoo.com/datarss/</id>
<author><name>Peter Mika (pmika@yahoo-inc.com)</name></author>
• but not for dynamic data
<title>Example data feed for Local</title>
<updated>2008-07-16T04:05:06+07:00</updated>
• Generate feed from DB
<entry>
• and maintain afterwards
<title>Parcel 104</title>
<id>http://local.yahoo.com/info-21583016-parcel-104-santa-clara</id>
• Closed approach
<updated>2008-07-16T04:05:06+07:00</updated>
<content type=quot;application/xmlquot;>
• only Yahoo! gets data
<y:adjunct version=quot;1.0quot; name=quot;com.yahoo.local”>
<y:item rel=quot;dc:subjectquot;>
• Actively provide a feed
<y:type typeof=quot;vcard:VCard commerce:Restaurant”>
<y:meta property=quot;commerce:hoursOfOperationquot;>
• coord w/Yahoo! to set up
Breakfast daily, Lunch Mon.-Fri., Dinner Mon.-Sat.
146. Building with Structured Data
• Structured data -> easy app building
–Relies on RDF, microformats, DataRSS
•That was the hard part
• PHP in a typical app
–Mostly simple assignments, Data::get()
–Possibly strings, XML, math
147. Data Sources: XSLT
Name Cached Open Mode Notes
Yahoo! Index yes yes Passive Old-School Y! Index data
RDFa, eRDF yes yes Passive Vocab + markup decoupled
Microformats yes yes Passive Vocab + markup coupled
DataRSS feed yes no Active Atom + metadata
XSLT no no Active Good for prototyping
Web Service no no Active Brings in remote data
148. Approach #4: Extract with
XSLT
<?xml version=quot;1.0quot;?>
<xsl:stylesheet xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0quot;>
<xsl:template match=quot;/quot;>
<adjunctcontainer>
<adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;>
• Generally not cached
<item rel=quot;rel:Photo”
resource=quot;{//div[@class='hresume']//div[@class='image']/img/@src}quot;/>
• too slow, infobar only
<item rel=quot;rel:Cardquot;>
<meta property=quot;vcard:fnquot;>
• but good for dynamic data
<xsl:value-of select=quot;//div[@class='hresume']//span[contains(@class,'fn')]quot;/>
</meta>
• Scrape page with XSLT
<meta property=quot;vcard:titlequot;>
<xsl:value-of select=quot;//div[@class='hresume']//ul[@class='current']/liquot;/>
• operates on cleaned up
</meta>
</item>
version of the DOM
</adjunct>
</adjunctcontainer>
• watch out for template
</xsl:template>
changes
</xsl:stylesheet>
• Easy to prototype
149. Prototyping with XSLT
• What if I don’t have structured data?
–I don’t own the site
–I do own the site, but I want to prototype first
• Build an XSLT custom data service first
–Write some XSLT to extract the data and
transform it into DataRSS
150. Creating an Infobar
• Infobar advantages
–Annotate someone else’s site
–Use links and images from other domains
•Mash up info from multiple sites
•Affiliate / coupon links? Hmmm…
–Can act on *, all websites
151. Data Sources: Web Services
Name Cached Open Mode Notes
Yahoo! Index yes yes Passive Old-School Y! Index data
RDFa, eRDF yes yes Passive Vocab + markup decoupled
Microformats yes yes Passive Vocab + markup coupled
DataRSS feed yes no Active Atom + metadata
XSLT no no Active Good for prototyping
Web Service no no Active Brings in remote data
152. Approach #5: Call a Web
Service
<?xml version=quot;1.0quot;?>
<xsl:stylesheet xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0”
xmlns:h=http://www.w3.org/1999/xhtml
• Generally not cached
xmlns:y=quot;urn:yahoo:srch”
xsi:schemaLocation=quot;urn:yahoo:srch
• too slow, infobar only
http://api.search.yahoo.com/SiteExplorerService/V1/PageDataResponse.xsdquot;>
<xsl:template match=quot;/quot;>
• but good for dynamic data
<adjunctcontainer xmlns:my=quot;http://example.com/ns/1.0quot;>
<adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;>
• Call a Remote Web
<meta property=quot;my:link1quot;>
<xsl:value-of select=quot;//y:Result[1]/y:Urlquot;/>
Service
</meta>
<meta property=quot;my:result1quot;>
• allows SearchMonkey apps
<xsl:value-of select=quot;//y:Result[1]/y:Titlequot;/>
</meta>
to glue together
</adjunct>
</adjunctcontainer>
• can handle OpenSearch
</xsl:template>
</xsl:stylesheet>
XML natively
156. Ever-present Monkeys
http://ysearchblog.com/2009/03/12/embed-
videos-games-and-docs-with-searchmonkey/
• Videos
• Games
• Documents
• More soon
157. Resources
• Main:
–http://developer.yahoo.com/searchmonkey
• Lists and Forums:
–searchmonkey-developers@yahoogroups.com
–http://suggestions.yahoo.com/searchmonkey
• RDF and Microformats:
158. Next Steps
1. Identify content to use in SearchMonkey
2. Weigh the strengths and drawbacks of each
method for providing data:
– RDF
– Microformats
– DataRSS feed
lots of interest in the markets, people doing widgets.. what’s a widget?
is blueprint for widgets?
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
at the beginning, j2me tools from nokia or sun and you could make a text app
WML / WAP browsers didn’t really spark imagination but worked
lowest common denominator or lots of work
it’s getting hard - developer mindshare
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
so which platform do you pick?
iphone?
android?
site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI?
500m visitors per month
aiming for 1bn mobile users
i.e. can a consumer use them? which consumer? where?
can they tell their friends? their dad?
i.e. can a consumer use them? which consumer? where?
can they tell their friends? their dad?
i.e. can a consumer use them? which consumer? where?
can they tell their friends? their dad?
not one country, region, segment. framing the market as billions means it can’t be one phone, one OS or even one technology.
Web as the Platform
Rich UI
Lightweight Programming Model
Software above a single device
End of Release Cycle
Data is the next Intel Inside
Collective Intelligence
Browsers, lots of them.
Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone?
and the iPhone.. the touch-screen daddy.
Browsers, lots of them.
Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone?
and the iPhone.. the touch-screen daddy.
Browsers, lots of them.
Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone?
and the iPhone.. the touch-screen daddy.
XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC.
XForms has the model in the head and references it from the page. Look at W3C site for more info.
DON’T HAVE TO LEARN OBJECTIVE-C
XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC.
XForms has the model in the head and references it from the page. Look at W3C site for more info.
DON’T HAVE TO LEARN OBJECTIVE-C
XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC.
XForms has the model in the head and references it from the page. Look at W3C site for more info.
DON’T HAVE TO LEARN OBJECTIVE-C
Blueprint is the platform - software above a single device
We have a placard for that.
We have a placard for that.
We have a placard for that.
video transcoding
cell tower database - growing rapidly
maps inc. satellite, driving directions, points of interest and soon KML.
video transcoding
cell tower database - growing rapidly
maps inc. satellite, driving directions, points of interest and soon KML.
video transcoding
cell tower database - growing rapidly
maps inc. satellite, driving directions, points of interest and soon KML.
Right now basic usage and device stats. We are integrating with IndexTools which is probably the best web analytics platform there is.
Right now basic usage and device stats. We are integrating with IndexTools which is probably the best web analytics platform there is.
Go is for Windows Mobile, Java, Blackberry & Symbian. Stated aim to support all platforms we can.
All platforms we support for Go. Basically single widget version of Go.
We transcode across may devices. In the future we will support branding.
We transcode across may devices. In the future we will support branding.
We transcode across may devices. In the future we will support branding.
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
targeted at the mass market. mostly you want reach, distribution and users!
carriers, oneSearch, frontpage
A SearchMonkey Enhanced result contains a great deal of structured data. It could have a picture, key/value pairs, deep links…
This kind of information goes far beyond what normal search results give you – a title and an autoextracted summary. Where does this information come from?
Likewise, an Infobar has a summary (what the user sees before the pane is expanded) and a “blob”, an area of free-form HTML.
Here’s a profile page for a colleague of mine on LinkedIn. When you and I glance at the page, we see all sorts of structured information. We see pictures, contact info, names, … all sorts of items that have actual meaning.
But spiders just see a blob of markup. The spider can extract some basic info, like a title (probably correct), a summary (could be good or not), and some other metadata. But for pulling structured information out of web pages, human beings beat computers hands down. So how to harvest structured data?
One approach would be to make computers SMARTER, by improving their ability to do pattern recognition and natural language processing. DRAWBACKS:
these sorts of AI-type features have proven to be pretty expensive and difficult to develop. I’m not smart enough to do this, so I want you to do it for me. YOU know a lot more about YOUR site than we do.
even with a “dumb” approach, indexing all these billions of webpages already takes many thousands of CPU cores, crunching away. Again, very expensive.
finally, we all know what happens here. The computer begins scouring information from the entire world wide web, starts learning at a geometric rate, becomes self-aware, …
Computers become intelligent, begin to learn at a geometric rate, form SkyNet, and scour the Earth with nuclear fire. Shareholder value decreases.
So we decided to go with the approach of -- keep our spider fairly dumb, and figure out different ways for people to provide us with structured data.
In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn’t use ALL these methods.
From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on.
Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index.
SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page.
We’ll talk more about all these methods in the subsequent slides.
In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn’t use ALL these methods.
From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on.
Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index.
SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page.
We’ll talk more about all these methods in the subsequent slides.
In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn’t use ALL these methods.
From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on.
Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index.
SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page.
We’ll talk more about all these methods in the subsequent slides.
In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn’t use ALL these methods.
From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on.
Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index.
SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page.
We’ll talk more about all these methods in the subsequent slides.