China Science Challenge
Upcoming SlideShare
Loading in...5
×
 

China Science Challenge

on

  • 1,400 views

 

Statistics

Views

Total Views
1,400
Views on SlideShare
1,400
Embed Views
0

Actions

Likes
0
Downloads
16
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

    China Science Challenge China Science Challenge Presentation Transcript

    • Developer Network
      INTRODUCTION
    • Developer Network
      Elsevier and SciVerse
      Elsevier publishes 25% of the world’s Scientific, Technical and Medical (STM) content:
      • more than 10 million full-text articles from 2600 journals in ScienceDirect,
      • more than 40 million abstracts and author, affiliation information in Scopus.
      • all content from Elsevier and scientific world wide web in Hub.
      SciVerse embeds applications within scientific content, giving developers and apps access via framework and content APIs.
      SciVerse is an extension of Apache Shindig, an implementation of OpenSocial. Sciverse apps can access content via open APIs.
    • Developer Network
      2011 The WAR of the INTERNETS
    • Developer Network
      Social Apps Web
      Both Facebook and Google are the same type of social network with applications. Facebook owns the social network, Google owns search.
      Elsevier’s SciVerse is social apps for scientific search.
      OpenSocial
      SciVerse uses OpenSocial standards. OpenSocial is a specification for creating an app-based social network. This spec is originally based on iGoogle by Google. SciVerse extends Apache Shindig, making apps contextual.
      The OpenSocial standard is worldwide used by sites with around 900 million users (Facebook has 500 million users):
      • Hi5
      • MySpace
      • Orkut
      • Friendster
      • ZDNet
      • RenRen
      • LinkedIn
      • Ning
      • SalesForce
      • Hyves
      • Imeem
      • Yahoo
      • Net
      • SciVerse
    • Developer Network
      Elsevier SciVerse – science, there’s an app for that
      Browser Apps
      iPhone Apps
      1 billion downloads
      350,000 apps
      Facebook Apps
      500 million users
    • Developer Network
      2011 – Social Apps based Business
    • Developer Network
    • Developer Network
      STM Publishing
      Elsevier publishes 25% of the world’s Science, Technology and Medical (STM) Publications
      ScienceDirect: 10 million full text articles in 2,500 journals
      Scopus: 42 million abstracts, citations, authors and affiliations
      Hub: plus web content covering 18,000 titles from over 5,000 publishers
      And META-DATA
    • Developer Network
      A list of search results with facets in SciVerse Hub
    • Developer Network
      Elsevier | Developer Network
      With SciVerse APPS (search result analysis app)
    • Developer Network
      an abstract for a scientific article with tables and references
    • Developer Network
      Elsevier | Developer Network
      With SciVerse APPS (genome viewer and protein network viewer)
    • Developer Network
      Full text article in ScienceDirect with popup APP (related content by nextbio)
    • Developer Network
      PART 1 – TECHNOLOGY PLATFORM
    • Developer Network
      OpenSocial Architecture
      IFRAME
      http request
      HTTP SERVER
      Shindig Server
      Gadget Renderer Servlet
      Data Service Servlet
      Apache Shindig is an implementation of the OpenSocial specification.
      Gadget Server
      Data Handler
      Container
      People
      Activities
      Gadget
      App Data
      DB1
      DB2
      Javascript Libraries
      Gadget.xml
    • Developer Network
      SciVerse Architecture
      SciVerse extends Apache Shindig. SciVerse gadgets can access the context of the page in which they appear via so called Framework APIs.
    • Developer Network
      SciVerse – Integration Points
      Apps appear as iframes in so-called views or integration points in the webpage.
      17
    • Developer Network
      What is a Gadget? The IFRAME Revolution
      OpenSocial Gadgets
      A gadget is a client-side application in the form of an HTML iFrame that appears in the context of a webpage and uses client-side scripting languages like JavaScript.
      IFRAME
      <iframesrc="iframe1.html" width=“400" height=“200">
      Hello World!
      </iframe>
      GADGET.XML (example 1)
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
      <ModulePrefs title=“HellowWorld1" author_email=“me@mine.com">
      <Require feature="opensocial-0.9" />
      </ModulePrefs>
      <Content type="html" view="profile"><![CDATA[
      <script type=‘text/javascript’>
      function fnWrite() {
      getElementById(‘content-div’).innerHTML = “Hello World”;
      }
      </script>
      <div id=‘content-div’></div>
      ]]></Content>
      </Module>
    • Developer Network
      Example 1 – OpenSocial Definition File or gadget.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
      <ModulePrefs title="SciVerseExamples-ContentAPICall1" author_email="CaprioR@your.domain">
      <Require feature="opensocial-0.9" />
      <Require feature="sciverse" />
      <Require feature="hub" />
      <Require feature="org.jquery.core-1.4.2" />
      </ModulePrefs>
      <Content type="html" view="canvas"><![CDATA[
      <!-- The code for Canvas view is here. -->
      ]]></Content>
      <Content type="html" view="profile"><![CDATA[
      Profile View
      ]]></Content>
      <Content type="html" view="sciverseResultsView"><![CDATA[
      <!-- The code for SciverseResultsViewview is here. -->
      <div>Sciverse Results View view for SciVerseExamples-ContentAPICall1.</div>
      ]]></Content>
      </Module>
    • Developer Network
      Object Oriented JavaScript
      JavaScript originally mainly added dynamic features to an otherwise static HTML page, creating DHTML. But with the advent of DOM, AJAX and gadget programming, JavaScript is now more than a simple client side scripting language, and has become a sophisticated application programming language.
      Therefore, follow Object Oriented design principles and create ‘un-obtrusive’ code:
      • Model View Control (MVC): separate data from model (JavaScript) and view (HTML).
      • Where possible create Object Oriented code that you can re-use
      • Create packages to separate namespaces to avoid naming conflicts
      • Create re-usable libraries for common code
      In addition test, debug and compress your code to improve performance and increase stability.
    • Developer Network
      Example 2 – Object Oriented JavaScript
      // create a class for SciVerseSearch
      function SciverseSearch() {

      }
      // create a static class variable
      SciverseSearch.View = {
      STANDARD: 'STANDARD',
      COMPLETE: 'COMPLETE'
      }
      // create a method instance for a query method
      SciverseSearch.prototype.execute = function(query) {

      }
      // create a setter for the view variable
      SciverseSearch.prototype.setView = function(view) {
      this.view = view;
      }
      // Now instantiate the class and call its method
      varsciverse = new SciverseSearch();
      sciverse.setView(SciverseSearch.View.COMPLETE);
      sciverse.execute(query);
    • Developer Network
      Debugging JavaScript
      Opera DragonflyOpera Browser has Dragonfly built-in.Firefox FirebugFor FireFox you can install the Firebug add-on. Safari Web Inspector On a Mac, there is Web Inspector for Safari. Chrome Developer ToolsGoogle Chrome comes with Developer Tools.
      The Developer Blog has an article with a
      Complete overview of debuggers for the main
      4 browsers at http://developer.sciverse.com/blog
      Blog Post:
      Complete Overview: Debugging JavaScript and SciVerse Apps in FireFox,
      Opera, Safari, Chrome, IE
    • Developer Network
      PART 2 – GADGET PROGRAMMING
    • Developer Network
      SciVerse APIs
      There are two main APIs for SciVerse:
      Framework API – with access to context and methods on the page
      Content API – for search and retrieval of articles, authors and affiliations
    • Developer Network
      SciVerse – Framework API
      The Framework API allows the app to access context and methods of the page.
      http://developer.sciverse.com/frameworkapi
    • Developer Network
    • Developer Network
      SciVerse – Framework API - ContextInfo
      Most of the information visible on the page, is accessible by the gadget via the Framework API. The ContextInfo object returns among other the following information:
      accountId, artNum, au1, au1First, au1Init, au1Suffix, au1Sur, auCorp,
      authorKeywords, date, docTitle, doi, entitlement, genre,
      indexTerms, individualUser, isbn, issn, issue, keywords, offset, originPage,
      otherKeywords, pageContentDivTagName, pages, pageType, part, partTitle,
      partValue, pii, platform, scDocId, scopusFlag, searchQuery, searchTerms,
      secureAuthtoken, sortOrder, sPage, srcTitle, ssn, timestamp, volume, year
      // retrieving the authtokenvia the GetContextInfo method’s callback
      function getContextInfoCallback(result){
      // get authtoken for content API call
      varauthtoken = result.secureAuthtoken;
      varsearchterm = result.searchTerms;
      }
      // retrieving the authToken via the gadget preferences
      <script type="text/javascript">
      varprefs = new gadgets.Prefs();
      varauthtoken= prefs.getString("secureAuthtoken");                               
      </script>
    • Developer Network
      Example - How to retrieve the authToken for the Content API call?
      function init(){
      gadgets.sciverse.getContextInfo(getContextInfoCallback); // this parameter is the callback method
      }
      function getContextInfoCallback(result){
      // get authtoken for content API call
      varauthtoken = result.secureAuthtoken;
      varsearchterm = result.searchTerms;
      }
      // after pageload finishes, this executes the init method, which will trigger following functions
      gadgets.util.registerOnLoadHandler(init);
      OR
      <UserPref name="contentApiKey" datatype="hidden" default_value="your-api-key-here" />
      <UserPref name="secureAuthtoken" datatype="hidden" />

      <script type="text/javascript">
      varprefs = new gadgets.Prefs();
      varauthToken = prefs.getString("secureAuthtoken");
      </script>
      Also, see the example code at
      https://github.com/sciversedev/examples/
    • Developer Network
      SciVerse Content API
      The Content API provides access to ScienceDirect and Scopus data. This is the backbone of the Elsevier content. The Content API can be accessed via building the query URL as follows:
    • Developer Network
      Example - Content API - search
      Hub Search
      http://api.elsevier.com/content/search/index:HUB?query=heart+attack
      Searches for documents in Hub that mention the term ‘heart attack’
      ScienceDirect Search
      http://api.elsevier.com/content/search/index:SCIDIR?query=TITLE(decay)&date=2007
      Searches for documents in ScienceDirect that have ‘decay’ in the title and that were published in 2007
      Scopus search http://api.elsevier.com/content/search/index:SCOPUS?query=AUTHLASTNAME(mckinley)%20AND%20SUBJAREA(CHEM)
      Searches for documents in Scopus in the area of chemistry written by people with last name “McKinley”
      Author search
      http://api.elsevier.com/content/search/index:AUTHOR?query=af-id(60032114)%20AND%20authlast(smith)
      Searches for authors that are affiliated with the institute that has affiliationID ‘60032114’ and whose last name is ‘smith’
      Affiliation search
      http://api.elsevier.com/content/search/index:AFFILIATION?query=affil(rotterdam)
      Searches for affiliation profiles (i.e. institutes) with Rotterdam in their name or description
    • Developer Network
      Example - Content API - retrieval
      Full-text retrieval (ScienceDirect)
      http://api.elsevier.com/content/article/DOI:10.1016/0092-8674(93)90500-P?view=FULL
      Retrieves the full-text version of the ScienceDirect document with DOI ‘10.1016/0092-8674(93)90500-P’
      Abstract retrieval (Scopus)
      http://api.elsevier.com/content/abstract/SCOPUS_ID:0027359827
      Retrieves the Scopus document with Scopus ID ‘0027359827’
      Author retrieval
      http://api.elsevier.com/content/author/AUTHOR_ID:44372231200?view=STANDARD
      Retrieves a ‘standard’ view of the author profile with Scopus author ID ‘44372231200’
      Affiliation retrieval
      http://api.elsevier.com/content/affiliation/AFFILIATION_ID:60016849?view=COMPLETE
      Retrieves a ‘complete’ view of the profile of the institute that has Scopus affiliationID ‘60016849’
      Serial title information
      http://api.elsevier.com/content/serial/title?ISSN=07400551
      Searches for/retrieves information about the journal of which the ISSN is ‘07400551’
    • Developer Network
      VIEWS and FIELDS
      A request to retrieve information can specify the fields that you want to retrieve. You can use a view with predefined fields or you can specify which particular fields you seek to return. Which views and which fields are available depends on the content-category: article (full text), abstract, author, or affiliation.
      http://developer.sciverse.com/sciversecontentapiretrievalviews
    • Developer Network
      VIEWS and FIELDS
      The {content-category} identifies the type of content. This is divided into:
      article–Serial and non-serial full text documents from journals and books published by Elsevier
      abstract– Abstracts from Scopus
      author– Author profiles generated from Scopus data.
      affiliation – Affiliation profiles generated from Scopus data.
      The {identifier_label} distinguishes the type of identifier :
      DOI - for full-text documents,
      SCOPUS_ID,
      AUTHOD_ID - Elsevier identifier tied to an individual author, AFFIL_ID -Elsevier identifier tied to an institution (for use as an affiliation)
      Other available unique identifiers available for use:
      PII - Publisher Item Identifier ,
      PUBMED_ID
    • Developer Network
      Search Facets
    • Developer Network
      SciVerse – Mashup
      <script type=‘text/javascript’>
      varmyapikey = ‘aaaass223ssss’;
      function fnCreateMashup(){
      gadgets.sciverse.getContextInfo(fnContextInfoCallback);
      }
      funtionfnContentInfoCallback(response){
      var search = response.searchQuery;
      varurl = ‘http://api.nytimes.com/svc/search/v1/article?query=‘+search+’&api-key=‘+myapikey+
      ‘format=json’;
      varparams = {
      ‘href’ : url,
      ‘format’ : ‘json’,
      ‘authz’ : ‘none’
      };
      osapi.http.get(params1).execute(fnNyTimesCallback);
      }
      function fnNyTimesCallback(nytimesResponse) {
      var output = ‘’;
      // using jquery
      $.each(nytimesResponse.content.results, function(I, result){
      output = output + result.data + ‘ – ‘ + result.title;
      }
      }
      gadgets.util.registerOnLoadHandler(fnCreateMashup);
      </script>