3. more than 40 million abstracts and author, affiliation information in Scopus.
4. 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.
22. 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
29. 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
30. 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.
31. Developer Network SciVerse – Integration Points Apps appear as iframes in so-called views or integration points in the webpage. 17
32. 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>
33. 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>
34.
35. Where possible create Object Oriented code that you can re-use
36. Create packages to separate namespaces to avoid naming conflicts
37. Create re-usable libraries for common code In addition test, debug and compress your code to improve performance and increase stability.
38. 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);
39. 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
41. 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
42. Developer Network SciVerse – Framework API The Framework API allows the app to access context and methods of the page. http://developer.sciverse.com/frameworkapi
44. 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>
45. 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/
46. 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:
47. 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
48. 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’
49. 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
50. 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