“Derivative Work” means a work based upon the Work or upon the Work and otherpre-existing works, such as a translation, musical arrangement, dramatization,fictionalization, motion pictur
Trang 1hCard and adr
hCard(http://microformats.org/wiki/hcard) is used to represent such entities as people,organizations, companies, and places An easy way to get started with hCard is to use thehCard Creator at http://microformats.org/code/hcard/creator
Let’s create an hCard for Tim Berners-Lee, the inventor of the Web, drawing on his webpage at http://www.w3.org/People/Berners-Lee/ to come up with the following:
<div id="hcard-Tim-Berners-Lee" class="vcard">
<a class="url fn" href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a>
<div class="org">World Wide Web Consortium</div>
<a class="email" href="mailto:timbl@w3.org">timbl@w3.org</a>
<div class="tel">+1 (617) 253 5702</div>
<p style="font-size:smaller;">This <a href="http://microformats.org/wiki/hcard">hCard</a> created with the <a href="http://microformats.org/code/hcard/creator">hCard creator</a>
There is support in adr for the following properties, which show up in adr as (X)HTMLattributes according to class-design-pattern:
Trang 2• postal-code
• country-name
hCalendar
hCalendar(http://microformats.org/wiki/hcalendar) is a microformat-based iCalendar used
to represent calendar information To quickly create an instance, use the hCalendar Creator
(http://microformats.org/code/hcalendar/creator), or consult the hCalendar cheat sheet
(http://microformats.org/wiki/hcalendar-cheatsheet) Let’s create an hCalendar for the
WWW 2008 conference (http://www2008.org/):
<div class="vevent"
id="hcalendar-WWW-2008-17th-International-World-Wide-Web-Conference">
<a class="url" href="http://www2008.org/">
<abbr class="dtstart" title="20080421">April 21th</abbr> —
<abbr class="dtend" title="20080426">25th, 2008</abbr>
and standards bodies working to shape the Web Since its inception in 1994, the WWW
conference has become the annual venue for international discussions and debate on
the future evolution of the Web."</div>
<p style="font-size: smaller;">This
<a href="http://microformats.org/wiki/hcalendar">hCalendar event</a>
brought to you by the
<a href="http://microformats.org/code/hcalendar/creator">hCalendar Creator</a>
</p>
</div>
Other Microformats
Here are some other noteworthy microformats:
• xoxo (http://microformats.org/wiki/xoxo) represents hierarchical outlines (that is,nested lists)
• vote-links (http://microformats.org/wiki/vote-links) indicates whether a link sents a vote-for, vote-abstain, or vote-against the link
repre-• hReview (http://microformats.org/wiki/hreview) represents reviews of URLs
• hResume (http://microformats.org/wiki/hresume) represents resumes
Trang 3Microformats in Practice
You can learn a lot about microformats by studying how they are actually being used on theWeb Some implementations include the following:
• The use of adr, hCard, hCalendar, tag, and geo by Upcoming.yahoo.com and Eventful.com
• The use of adr and hCard at Yahoo! Local
• The use of hCard and adr on Technorati
I suggest using the list of implementations of microformats in the wild (http://microformats.org/wiki/examples-in-the-wild), which includes lists for geo, hCalendar,hCard, hReview, and include-pattern Go to the listed sites, and use Operator to pick outthe microformats
Programming with Microformats
For simple microformats, including the ones that depend on rel-design-pattern, it should besimple enough to write your own code to parse data from and write data to the appropriatereland rev attributes It takes a lot more work to handcraft parsers for complicated microfor-mats such as hCard and hCalendar because there are many possible properties
There are no schemas for microformats, only specifications written for direct humaninterpretation, which makes difficult any autogeneration of high-quality language-specificparsers from the specifications.9
A challenge in working with microformats is the lack of validators Norm Walsh arguesthat W3C Schema and Relax-NG will not work for the purpose of expressing the syntax ofmicroformats as schemas, though Schematron might be up for the task.10You can use XMDP,
a schema (of sorts) geared to easy human consumption, to get partway to generating tors, argues Brian Suda, at least for some simple formats.11
valida-Hence, you will need to look for some handcrafted language-specific libraries to handlemicroformats Start by looking at http://microformats.org/wiki/implementations
Language-Specific Libraries
Here are some language-specific libraries:
• mofo (http://mofo.rubyforge.org/) is a new Ruby library that has support for a variety
of microformats including hCard, hCalendar, and xfn
• uformats (http://rubyforge.org/projects/uformats/) is another Ruby library that hassupport for hReview, hCard, hCalendar, rel-tag, rel-license, and include-pattern
9 http://smackman.com/2006/06/01/an-old-idea/ and rdf-in-xhtml-tf/2006Jun/0011.html
http://lists.w3.org/Archives/Public/public-10 See http://norman.walsh.name/2006/04/13/validatingMicroformats for more about validatingmicroformats Erik van der Vlist adds to this analysis at http://eric.van-der-vlist.com/blog/2277_Validating_microformats.item
11 http://norman.walsh.name/2005/09/05/microformats#comment0008
Trang 4• For PHP 5, consider using hKit (http://allinthehead.com/hkit/), which has supportfor hCard.
• Probably the best library out there is Microformats.js, which is the heart of the Operatoradd-on.12
There are interesting things to do with Operator, both for what it can do today and forhow it might be a harbinger of things to come in Firefox 3 (which might have native support
for microformats).13Operator makes a great sandbox for experimenting with microformats
Here are some things to try:
• Download and install user-scripts to add new actions and new microformats (http://
Writing an Operator Script
In this section, I’ll lead you through the process of creating a simple user script for Operator
Start by looking through the best documentation for understanding Operator scripts:
script will geocode the address by creating a URL to http://geocoder.us Since our script is
similar to that of the tutorial, we will follow a two-step strategy:
1. Install the tutorial script to understand how it works
2. Convert the script to one that geocodes the adr instance
Trang 5Studying the Tutorial Script
You will find the tutorial script here:
http://www.kaply.com/weblog/wp-content/uploads/2007/07/dominos.js
It’s possible that after this book is published, there might be a newer version of the enced user scripts You can check here: http://www.kaply.com/weblog/operator-user-scripts/.Install it and restart your web browser If you run the action on this:
refer-http://upcoming.yahoo.com/event/144855
your browser will conduct a search for the closest Domino’s Pizza stores to 1401 N ShorelineBlvd in Mountain View, CA:
http://www.dominos.com/apps/storelocator-EN.jsp?street=1401%20N%20Shoreline%20Blvd.&➥cityStateZip=California,%20Mountain%20View%2094043
Let’s now study the script to understand how it works:
var dominos = {
description: "Find the nearest Domino's Pizza", shortDescription: "Domino's",
scope: {semantic: {
"adr" : "adr"
}},doAction: function(semanticObject, semanticObjectType) {var url;
if (semanticObjectType == "adr") {var adr = semanticObject;
Trang 6}return url;
}};
SemanticActions.add("dominos", dominos);
There are several elements to notice about this script as you think about how to adapt it:
• The dominos JavaScript object defines an action An action consists of four properties:
description, shortDescription, scope, and doAction
• You should change the name of the JavaScript object, its description, and its shortDescriptionto fit the purpose of the new script
• The scope property is used to tie an action to a specific data format The following:
scope: {semantic: {
"adr" : "adr"
}means any adr instance You can limit the scope to only adr instances with the propertylocalitywith this:
scope: {semantic: {
"adr" : "locality"
}
or to a certain URL:
scope: {url: "http://www.flickr.com"
}
• Associated with the doAction property is a function that actually creates the URL forDomino’s Pizza by concatenating the various pieces of the adr instance To adapt thisfunction, you need to understand the URL structure of http://geocoder.us, the service
we will use to geocode the address
• Note that the simplest type of action of an Operator script is to return a URL, whichthe browser then loads (You can learn how to get Operator actions to perform otheroperations by reading the advanced tutorials at http://www.kaply.com/weblog/
operator-user-scripts/.)
Trang 7Writing a Geocoding Script
As you learned in Chapter 13, there are a variety of sites to use to geocode an address in theUnited States One service is Geocoder.us You can geocode an address here:
http://geocoder.us/demo.cgi?address={address}
For example:
http://geocoder.us/demo.cgi?address=1600+Pennsylvania+Ave%2C+Washington+DC
Taking the URL template for Geocoder.us into account, you can adapt the script to come
up with something like the following:
"adr" : "adr"
}},doAction: function(semanticObject, semanticObjectType) {var url;
if (semanticObjectType == "adr") {var adr = semanticObject;
url = "http://geocoder.us/demo.cgi?address=";
if (adr["street-address"]) { url += adr["street-address"].join(", ");
url += ", ";
}
if (adr.locality) { url += adr.locality;
url += ", ";
}
if (adr.region) { url += adr.region;
url += ", ";
}
if (adr["postal-code"]) { url += adr["postal-code"];
}
}return url;
}};
SemanticActions.add("geocoder_us", geocoder_us);
Trang 8The resulting URL for Mashup Camp IV on Upcoming.yahoo.com is as follows:
http://geocoder.us/demo.cgi?address=1401%20N%20Shoreline%20Blvd.,%20Mountain%20View,➥
%20California,%2094043
Resources (RDFa): A Promising Complement to
Microformats
There’s a lot of hype around RDF and the semantic Web, but the core concept of the Resource
Description Framework (RDF) is simple:
• An RDF document is just a series of statements about resources in a subject-predicate-object(triplet) form In other words, they are statements where a resource (R) has a property(P) of a value (V)—a triplet (R,P,V) For example: ("Raymond Yee", "has age of ", 40)
• RDF vocabularies define ways to talk about such things as types of resources and termsfor properties For example, a genealogical vocabulary would define properties such as
“is mother of” and “is sister of.”
• Once we have these types of RPVs around, we can add to the mix various logical sitions If V > 30 of an RPV with P="has age of", then (R, "has to trust status", No)
propo-In other words, a computer program should be able to deduce that Raymond Yee shouldnot be trusted since he is older than 30, since one must not trust anyone older than 30
Tim Bray’s “What is RDF?” (http://www.xml.com/pub/a/2001/01/24/rdf.html) was the firstessay I read in my attempts to understand RDF It’s still very good However, I think that the
triplets idea was still unclear to me after reading the essay (And I don’t blame Tim Bray for
that since the idea is clearly in the essay.) So, you should follow up Bray’s essay with reading
something like Aaron Schwartz’s “RDF Primer Primer” (http://notabug.com/2002/rdfprimer/)
The two complement each other
You can express RDF triplets in many ways, including the standard RDF/XML syntax(http://www.w3.org/TR/rdf-syntax-grammar/) Since we have been discussing how microfor-
mats embed machine-understandable data in (X)HTML, we’ll now look at RDFa (http://
rdfa.info/about/), described in the following way:
With RDFa, you can easily include extra “structure” in your HTML to indicate a calendar event, contact information, a document license, etc RDFa is about total publisher control: you choose which attributes to use, which to reuse from other sites, and how to evolve, over time, the meaning of these attributes.
Here is a sample RDFa assertion, in which the resource (a book with ISBN of 9781590598580) has a property (namely, the Dublin Core title) whose value is Pro Web 2.0
Mashups: Remixing Data and Web Services:16
<span xmlns:dc="http://purl.org/dc/elements/1.1/" about="isbn:9781590598580"
property="dc:title">Pro Web 2.0 Mashups: Remixing Data and Web Services</span>
16 http://examples.mashupguide.net/ch18/sample_rdf.html
Trang 9I think that microformats and RDFa will both have a place on the Web Microformatsalready have some good uptake and are grounded in today’s real-world problems They arefocused on very specific applications RDFa provides a mechanism for making more generalassertions about pieces of data.
Reference for Further Study
The following are useful resources for more on microformats:
• The microformat book at http://microformatique.com/book/
• Micah Dubinko’s “What Are Microformats?”17
• Uche Ogbuji’s “Microformats in Context”18
Summary
You can use microformats and RDFa to embed data into the human-readable contexts of(X)HTML In this chapter, you looked at instances of microformats that you can find “in thewild” (such as on Upcoming.yahoo.com) and ones that you can craft as simple examples, andyou learned about how you can use microformats to embed data (such as contact information,addresses, geolocations, bookmarks, tags, and licenses) into (X)HTML Microformats tend tofollow certain common design patterns (that is, use class attributes or use the rel attribute)and are adapted from existing standards (such as iCalendar and vCard)
In this chapter, you learned how to use the Operator Firefox extension to work with formats, including extracting them from web pages and invoking actions on them You saw howthese Operator actions enact simple mashups that move data from any web site with embed-ded microformats to another web site
micro-17 http://www.xml.com/pub/a/2005/03/23/deviant.html
18 http://www.xml.com/pub/a/2006/04/26/microformats-grddl-rdfa-nvdl.html
Trang 10Integrating Search
No one needs to be reminded that search engines are at the heart of the current web
infra-structure Not surprisingly, it’s useful to be able to integrate search functionality and search
results into mashups If a mashup is integrated with search engines via their APIs, users of the
mashups can more easily find and reuse that digital content
This chapter shows how to use the Google, Yahoo!, and Live.com search APIs, as well
as configuring searchable web sites for access as a search plug-in in Firefox 2.0 or Internet
Explorer 7 using OpenSearch This chapter will also examine briefly how to use the Google
Desktop Search API
Google Ajax Search
Google was one of the first major search companies to provide an API: the Google SOAP API
Since December 2006, no new developer keys have been issued because Google is directing
users to its newer Ajax Search API, which we will now study
The Google Ajax Search API (http://code.google.com/apis/ajaxsearch/) gives you a searchwidget that you can embed in your web site You can access functionality for searching the Web,
doing local searches (tied to maps), and doing video searches The widget displays a search
box and takes care of displaying search results in an HTML element that you designate
Like Google Maps, you have to sign up for a key that is tied to a specific directory; you can
do that here:
http://code.google.com/apis/ajaxsearch/signup.html
Paste the “Hello, World” code into your page, and load it.1The “Hello, World” code showsyou how to create a basic search box and display the results
Manipulating Search Results
Let’s adapt the basic code to let a user search a particular search source (the web search) and
save a result This is done by creating a callback (KeepHandler) with the setOnKeepCallback
method You’ll also see some code to access the attributes of the result.2
Trang 11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
// attach it var savedResults = document.getElementById("saved_results");
savedResults.appendChild(node);
// extract some info from the result to show to get at the individual // attributes.
// see http://code.google.com/apis/ajaxsearch/documentation/reference.html var title = result.title;
var unformattedtitle = result.titleNoFormatting;
var content = result.content;
var unescapedUrl = result.unescapedUrl;
alert("Saving " + unformattedtitle + " " + unescapedUrl + " " + content); }
function OnLoad() { // Create a search control var searchControl = new GSearchControl();
// attach a handler for saving search results searchControl.setOnKeepCallback(this, KeepHandler);
// expose the control to manipulation by the JavaScript shell and Firebug window.searchControl = searchControl
// Add in the web searcher searchControl.addSearcher(new GwebSearch());
// Tell the searcher to draw itself and tell it where to attach searchControl.draw(document.getElementById("search_control"));
Trang 12// Execute an initial search searchControl.execute("flower");
The Yahoo! Search API (http://developer.yahoo.com/search/) is a RESTful one I’ll now show
how to use the Yahoo! Search API
You need an application ID, which you get from here:
Trang 13In the authentication system, there is a single sign-on option For this example, I signed
up for the ability to do single sign-on, for which I needed to state an application endpoint:http://examples.mashupguide.net/ch07/yahoo.php
Once you have registered your application, you can get an application ID and a shared secret.Now, let’s do a web search that doesn’t require any authentication Consulting the docu-mentation (http://developer.yahoo.com/search/web/) and specifically the classic web searchdocumentation (http://developer.yahoo.com/search/web/V1/webSearch.html), you can see
An excerpt of the search results follows:
<Result>
<Title>1-800-FLOWERS.COM - Official Site</Title>
<Summary>1-800-Flowers delivers flowers and floral arrangements, gift baskets,➥gourmet treats, or other presents for anniversaries, birthdays, and special➥occasions Order online, over the phone, or by visiting a store location
</Summary>
<Url>http://www.1800flowers.com/</Url> <ClickUrl>http://uk.wrs.yahoo.com/_ylt=➥A0Je5VZ47HdGmOQAzhvdmMwF;_ylu=X3oDMTB2cXVjNTM5BGNvbG8DdwRsA1dTMQRwb3MDMQRzZWMDc3IEdn➥RpZAM-/SIG=19qu9j9dq/EXP=1182350840/**http%3A//rdrw1.yahoo.com/click%3
Fu=http%3A//clickserve.cc-dt.com/link/click%253Flid%253D41000000011562437%26y=04765B7ED3D00A0BB4%26i=482%26c=37687%26q=02%255ESSHPM%255BL7ysphzm6%26e=utf-8%26r=0%26d=wow~WBSV-en-us%26n=LP94K1LESHRKDFP3%26s=3%26t=%26m=4677EC78%26x=057E49A7F20A924F7B2C30A7101C217A96</ClickUrl>
Trang 14<Summary>Sunshine Flower Sunday, 14 Nov 2004 | Disneyland , Flora A flower taken➥
at Disney's California Adventure Nikon D100 | 50mm f/1.4 D | 50mm | 1/250 sec |➥
f/2.5 | ISO 200 | 26 Jun 2004</Summary>
<Url>http://www.disneymike.com/photoblog/dca_sunshine_flower.jpg</Url>
<ClickUrl>http://www.disneymike.com/photoblog/dca_sunshine_flower.jpg</ClickUrl>
<RefererUrl>http://www.disneymike.com/photoblog/archives/2004/11/sunshine_flower➥
.html</RefererUrl>
Trang 15Microsoft Live.com Search
Microsoft’s Live Search APIs (http://msdn2.microsoft.com/en-us/library/bb251794.aspx) areSOAP-based The WSDL for version 1.1 is as follows:
envi-The search parameters for the Live Search API are more complicated than those for theGoogle SOAP search because the former uses complex, nested types As I described in Chapter 7,there are a variety of ways to invoke WSDL-described SOAP calls Some generate language-specificbindings The one I find the easiest to understand is the approach taken by such tools as the
Trang 16WSDL/SOAP tools in XML Spy and oXygen: feed them the WSDL, and they determine the SOAP
connection endpoint, the SOAPaction, and a template for the body That combination of
param-eters allows you to call the method without resorting directly to any SOAP libraries
■ Note XML Spy and oXygen are not free, although you can try them for 30 days free of charge I don’t
know of any freeware (except perhaps Eclipse) that makes it quite so easy to work with WSDL and SOAP
The search parameters are confusing, and it is not at all clear which parameters aremandatory without studying the WSDL directly; it’s also not clear what the valid parameters
would be For instance, I needed to study the following:
http://msdn2.microsoft.com/en-us/library/bb266177.aspx
to get help with the CultureInfo field to figure out that an acceptable value is en-US for American
English
Feeding the Live.com WSDL to XML Spy, you will get the following:
• Connection endpoint: http://soap.search.msn.com:80/webservices.asmx
• SOAPaction HTTP header: http://schemas.microsoft.com/MSNSearch/2005/09/fex/Search
• The following template for a SOAP request:
Trang 17which distinguishes between the following required parameters:
• AppID: Your application key
• CultureInfo: Language and regional information that must be chosen from a list ofpossible values3(for example, en-US)
• Query: Your search term
• Requests: A list of SourceRequest values drawn from a set of possible values4(for example,Web, Ads, Image)
and the following optional parameters:
• Flags: One of None, DisableHostCollapsing, DisableSpellCheckForSpecialWords, orMarkQueryWord(None is the default value)
• Location: The latitude, longitude, and optional search radius for the search
• SafeSearch: One of Strict, Moderate, or Off (Moderate is the default value)Here’s a sample SOAP request that searches the Web for flower in the American Englishcontext:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
Trang 18This shows how to do this with curl:
curl -H 'SOAPAction: "http://schemas.microsoft.com/MSNSearch/2005/09/fex/Search"'➥
-<Description>Florist and gift retailer and franchisor with more than➥
100 stores nationwide offering online purchasing of arrangements, plants, gift➥
baskets, confections and gourmet foods </Description>
Trang 19The A9 search engine (http://a9.com) created the OpenSearch protocol (http://www.
opensearch.org/Home) as a “collection of simple formats for the sharing of search results.”Many web sites have their own search boxes; many are also capable of creating RSS andAtom feeds OpenSearch is a set of extensions that can wrap existing search functionality, lever-aging the feeds to create lightweight search APIs The most prominent clients for OpenSearchare the search plug-ins for Firefox 2 and Internet Explorer 7
Let’s get more concrete One of the easiest ways to learn how to create a search plug-in is touse the search plug-in generator at the Mozilla Mycroft project (http://mycroft.mozdev.org/submitos.html)
Here I use http://blog.mashupguide.net as an example site for which I want to generate
a search plug-in I go to the blog to type in a term (for example, Yahoo) to search on and see
what URLs come back:
Trang 20<Description>Search for info about mashups</Description>
<Url type="text/html" method="get"
With the OpenSearch XML document in hand, you can then embed some JavaScript to let
a user install the plug-in The relevant method is window.external.AddSearchProvider(),
which you find documented here:
• http://msdn2.microsoft.com/en-us/library/Aa744112.aspx (for Internet Explorer 7)
• http://developer.mozilla.org/en/docs/Adding_search_engines_from_web_pages (forFirefox)
You can get a list of search engine plug-ins here:
• https://addons.mozilla.org/en-US/firefox/browse/type:4 (a popular list linked tofrom within the Firefox Manage Search Engine List widget)
• http://mycroft.mozdev.org/dlstats.html (the top downloads)Note a caveat from http://mycroft.mozdev.org/contribute.html:
While the implementation of Sherlock [the legacy Apple search tool] in Mozilla-based browsers only supported GET requests, the introduction of OpenSearch has also allowed POST requests to be used but unfortunately this is not currently supported in IE7.
You can use the following WordPress plug-in to generate a search plug-in:
http://inner.geek.nz/projects/wordpress-plugins/mycroft-search-plugin-generator/
There is another half to the OpenSearch specification If the search results that come out
of the search engine are in RSS 2.0 or Atom 1.0 format, wrapped with special elements
docu-mented here:
http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_response_elements
Trang 21then the search results can be consumed and presented by search clients that support theOpenSearch protocol:
Google Desktop HTTP/XML Gateway
If you find the Google Desktop useful, you might be glad to know that you can access resultsprogrammatically via an HTTP/XML gateway, documented at the following location:
http://desktop.google.com/dev/queryapi.html#httpxml
■ Note There is also a COM-based interface in Windows, located at http://desktop.google.com/dev/queryapi.html#registering The XML gateway works on Mac OS X in Google Desktop Mac 1.0.3+ TheAPI is currently unsupported for the Linux version of Google Desktop
On Windows, you get the query URL from the registry key using this:
Trang 22Add to Reddit Add to calendar Eventful calendar Add to Calendar: <b>Bach</b>
in San Francisco metro area Berkeley, California, USA My Events Add to
In this chapter, you learned the basics of using APIs for Google Ajax Search, Yahoo! Search,
Yahoo! Image Search, and Microsoft Live.com for searching content on the Web You looked at
how you can use OpenSearch to wrap existing search functionality so that it can be accessed
in search bars for web browsers Finally, I presented an example of an API for desktop search
by outlining the Google Desktop HTTP/XML gateway
Trang 24Creative Commons
Legal Code
Attribution-NonCommercial-ShareAlike 2.5
Reprinted from http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDELEGAL SERVICES DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN
“AS-IS” BASIS CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE MATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROMITS USE
INFOR-License
THE WORK (AS DEFINED BELOW ) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE (“CCPL” OR “LICENSE”) THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW ANY USE OF THE WORK OTHER THAN
AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT ANDAGREE TO BE BOUND BY THE TERMS OF THIS LICENSE THE LICENSOR GRANTS YOU THE
RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS
AND CONDITIONS
1 Definitions
a “Collective Work” means a work, such as a periodical issue, anthology or
encyclo-pedia, in which the Work in its entirety in unmodified form, along with a number
of other contributions, constituting separate and independent works in themselves,are assembled into a collective whole A work that constitutes a Collective Work willnot be considered a Derivative Work (as defined below) for the purposes of thisLicense
573
A P P E N D I X
■ ■ ■
Trang 25b “Derivative Work” means a work based upon the Work or upon the Work and other
pre-existing works, such as a translation, musical arrangement, dramatization,fictionalization, motion picture version, sound recording, art reproduction, abridg-ment, condensation, or any other form in which the Work may be recast, transformed,
or adapted, except that a work that constitutes a Collective Work will not be ered a Derivative Work for the purpose of this License For the avoidance of doubt,where the Work is a musical composition or sound recording, the synchronization
consid-of the Work in timed-relation with a moving image (“synching”) will be considered
a Derivative Work for the purpose of this License
c “Licensor” means the individual or entity that offers the Work under the terms of
this License
d “Original Author” means the individual or entity who created the Work.
e “Work” means the copyrightable work of authorship offered under the terms of
this License
f “You” means an individual or entity exercising rights under this License who has
not previously violated the terms of this License with respect to the Work, or whohas received express permission from the Licensor to exercise rights under thisLicense despite a previous violation
g “License Elements” means the following high-level license attributes as selected
by Licensor and indicated in the title of this License: Attribution, Noncommercial,ShareAlike
2 Fair Use Rights Nothing in this license is intended to reduce, limit, or restrict any
rights arising from fair use, first sale or other limitations on the exclusive rights of thecopyright owner under copyright law or other applicable laws
3 License Grant Subject to the terms and conditions of this License, Licensor hereby
grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of theapplicable copyright) license to exercise the rights in the Work as stated below:
a to reproduce the Work, to incorporate the Work into one or more Collective Works,and to reproduce the Work as incorporated in the Collective Works;
b to create and reproduce Derivative Works;
c to distribute copies or phonorecords of, display publicly, perform publicly, andperform publicly by means of a digital audio transmission the Work including asincorporated in Collective Works;
d to distribute copies or phonorecords of, display publicly, perform publicly, andperform publicly by means of a digital audio transmission Derivative Works;The above rights may be exercised in all media and formats whether now known orhereafter devised The above rights include the right to make such modifications asare technically necessary to exercise the rights in other media and formats All rightsnot expressly granted by Licensor are hereby reserved, including but not limited tothe rights set forthin Sections 4(e) and 4(f )
Trang 264 Restrictions The license granted in Section 3 above is expresslymade subject to and
limited by the following restrictions:
a You may distribute, publicly display, publicly perform, or publicly digitally performthe Work only under the terms of this License, and You must include a copy of, orthe Uniform Resource Identifier for, this License with every copy or phonorecord
of the Work You distribute, publicly display, publicly perform, or publicly digitallyperform You may not offer or impose any terms on the Work that alter or restrictthe terms of this License or the recipients’ exercise of the rights granted hereunder
You may not sublicense the Work You must keep intact all notices that refer to thisLicense and to the disclaimer of warranties You may not distribute, publicly display,publicly perform, or publicly digitally perform the Work with any technologicalmeasures that control access or use of the Work in a manner inconsistent with theterms of this License Agreement The above applies to the Work as incorporated in
a Collective Work, but this does not require the Collective Work apart from the Workitself to be made subject to the terms of this License If You create a CollectiveWork, upon notice from any Licensor You must, to the extent practicable, removefrom the Collective Work any credit as required by clause 4(d), as requested If Youcreate a Derivative Work, upon notice from any Licensor You must, to the extentpracticable, remove from the Derivative Work any credit as required by clause 4(d),
as requested
b You may distribute, publicly display, publicly perform, or publicly digitally perform
a Derivative Work only under the terms of this License, a later version of this Licensewith the same License Elements as this License, or a Creative Commons iCommonslicense that contains the same License Elements as this License (e.g Attribution-NonCommercial-ShareAlike 2.5 Japan) You must include a copy of, or the UniformResource Identifier for, this License or other license specified in the previous sentencewith every copy or phonorecord of each Derivative Work You distribute, publiclydisplay, publicly perform, or publicly digitally perform You may not offer or imposeany terms on the Derivative Works that alter or restrict the terms of this License orthe recipients’ exercise of the rights granted hereunder, and You must keep intactall notices that refer to this License and to the disclaimer of warranties You maynot distribute, publicly display, publicly perform, or publicly digitally perform theDerivative Work with any technological measures that control access or use ofthe Work in a manner inconsistent with the terms of this License Agreement Theabove applies to the Derivative Work as incorporated in a Collective Work, but thisdoes not require the Collective Work apart from the Derivative Work itself to bemade subject to the terms of this License
c You may not exercise any of the rights granted to You in Section 3 above in anymanner that is primarily intended for or directed toward commercial advantage orprivate monetary compensation The exchange of the Work for other copyrightedworks by means of digital file-sharing or otherwise shall not be considered to beintended for or directed toward commercial advantage or private monetary com-pensation, provided there is no payment of any monetary compensation in connectionwith the exchange of copyrighted works
Trang 27d If you distribute, publicly display, publicly perform, or publicly digitally performthe Work or any Derivative Works or Collective Works, You must keep intact allcopyright notices for the Work and provide, reasonable to the medium or meansYou are utilizing: (i) the name of the Original Author (or pseudonym, if applicable)
if supplied, and/or (ii) if the Original Author and/or Licensor designate anotherparty or parties (e.g a sponsor institute, publishing entity, journal) for attribution
in Licensor’s copyright notice, terms of service or by other reasonable means, thename of such party or parties; the title of the Work if supplied; to the extent reason-ably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to
be associated with the Work, unless such URI does not refer to the copyright notice
or licensing information for the Work; and in the case of a Derivative Work, a creditidentifying the use of the Work in the Derivative Work (e.g., “French translation ofthe Work by Original Author,” or “Screenplay based on original Work by OriginalAuthor”) Such credit may be implemented in any reasonable manner; provided,however, that in the case of a Derivative Work or Collective Work, at a minimumsuch credit will appear where any other comparable authorship credit appears and
in a manner at least as prominent as such other comparable authorship credit
e For the avoidance of doubt, where the Work is a musical composition:
i Performance Royalties Under Blanket Licenses Licensor reserves the
exclu-sive right to collect, whether individually or via a performance rights society(e.g ASCAP, BMI, SESAC), royalties for the public performance or public digitalperformance (e.g webcast) of the Work if that performance is primarily intendedfor or directed toward commercial advantage or private monetary compensation
ii Mechanical Rights and Statutory Royalties Licensor reserves the exclusive
right to collect, whether individually or via a music rights agency or designatedagent (e.g Harry Fox Agency), royalties for any phonorecord You create from theWork (“cover version”) and distribute, subject to the compulsory license created
by 17 USC Section 115 of the US Copyright Act (or the equivalent in other dictions), if Your distribution of such cover versionis primarily intended for ordirected toward commercial advantage or private monetary compensation
juris-f Webcasting Rights and Statutory Royalties For the avoidance of doubt, where the
Work is a sound recording, Licensor reserves the exclusive right to collect, whetherindividually or via a performance-rights society (e.g SoundExchange), royalties forthe public digital performance (e.g webcast) of the Work, subject to the compulsorylicense created by 17 USC Section 114 of the US Copyright Act (or the equivalent inother jurisdictions), if Your public digital performance is primarily intended for ordirected toward commercial advantage or private monetary compensation
5 Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOROFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OFANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE
OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
Trang 28ERRORS, WHETHER OR NOT DISCOVERABLE SOME JURISDICTIONS DO NOT ALLOWTHE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
TO YOU
6 Limitation on Liability EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW,
IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANYSPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGESARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSORHAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
7 Termination
a This License and the rights granted hereunder will terminate automatically uponany breach by You of the terms of this License Individuals or entities who havereceived Derivative Works or Collective Works from You under this License, how-ever, will not have their licenses terminated provided such individuals or entitiesremain in full compliance with those licenses Sections 1, 2, 5, 6, 7, and 8 will sur-vive any termination of this License
b Subject to the above terms and conditions, the license granted here is perpetual(for the duration of the applicable copyright in the Work) Notwithstanding theabove, Licensor reserves the right to release the Work under different license terms
or to stop distributing the Work at any time; provided, however that any such tion will not serve to withdraw this License (or any other license that has been, or
elec-is required to be, granted under the terms of thelec-is License), and thelec-is License willcontinue in full force and effect unless terminated as stated above
8 Miscellaneous
a Each time You distribute or publicly digitally perform the Work or a CollectiveWork, the Licensor offers to the recipient a license to the Work on the same termsand conditions as the license granted to You under this License
b Each time You distribute or publicly digitally perform a Derivative Work, Licensoroffers to the recipient a license to the original Work on the same terms and condi-tions as the license granted to You under this License
c If any provision of this License is invalid or unenforceable under applicable law, itshall not affect the validity or enforceability of the remainder of the terms of thisLicense, and without further action by the parties to this agreement, such provi-sion shall be reformed to the minimum extent necessary to make such provisionvalid and enforceable
d No term or provision of this License shall be deemed waived and no breach sented to unless such waiver or consent shall be in writing and signed by the party
con-to be charged with such waiver or consent
e This License constitutes the entire agreement between the parties with respect tothe Work licensed here There are no understandings, agreements or representationswith respect to the Work not specified here Licensor shall not be bound by any addi-tional provisions that may appear in any communication from You This Licensemay not be modified without the mutual written agreement of the Licensor and You