This document provides information about Elsevier's SciVerse developer platform. It discusses how SciVerse allows developers to build applications that can access Elsevier's scientific content through APIs. It describes the OpenSocial architecture that SciVerse uses, including gadgets, views, and integration points. It also outlines the framework and content APIs that developers can use to retrieve metadata and search content in their applications.
2. Developer Network Elsevier and SciVerse Elsevier publishes 25% of the world’s Scientific, Technical and Medical (STM) content, with more than 10 million full-text articles from 2600 journals in ScienceDirect, and more than 40 million abstracts and author, affiliation information in Scopus. In SciVerse Hub you can access all content from Elsevier plus scientific content from the web. SciVerse lets you embed applications within the content, giving developers and apps access to framework and content APIs. SciVerse is an extension of Apache Shindig, an implementation of OpenSocial. Sciverse apps can access content via APIs. Keywords: Services Oriented Architecture (SOA) Web 2.0 Cloud based computing Distributed Services Web Services Open Data REST OAuth
3. 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
4. Developer Network Elsevier | Developer Network Hub Search Results with SciVerse APPS (search result analysis app)
6. 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
7. Developer Network SciVerse – Integration Points Apps appear as iframes in so-called views or integration points in the webpage. 7
8. 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>
10. 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
11. 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 authToken via 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>
12. 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/
13. 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