COUNTER Statement of Work

Services to be performed and results to be achieved:

1.  Add PLoS journals to PLoS COUNTER reports (~1 week)

2.  Create COUNTER reports for individual articles (~2 weeks)

3.  Enhance PLoS Reports Drupal module (~2 weeks)

4.  Create REST API for article level metrics (~2 weeks)

General

COUNTER (Counting Online Usage of Networked Electronic Resources) is an international initiative serving librarians, publishers and intermediaries by setting standards that facilitate the recording and reporting of online usage statistics in a consistent, credible and compatible way.

http://www.plosreports.org/ is a Drupal site that replaced a third party’s COUNTER reports. Institutions can create a user account with associated IP ranges and retrieve usage statistics for their institution. The reports database is populated by a set of PHP scripts that parse the raw Apache log files and applies the COUNTER double-click rules.

Currently, only the PLoS Medicine and PLoS Biology log files are parsed.

We need to include the PLoS journals hosted on the Topaz platform, store individual article statistics (both site-wide and per ip-range) and provide a mechanism for external sites to retrieve the article statistics.

Articles will be identified by their digital object identifier (e.g. journal.pone.0000425).

Add PLoS journals to COUNTER reports

New Functionality

  1. Add the following journals to the COUNTER reports:
  2. PLoS ONE
  3. PLoS Computational Biology
  4. PLoS Genetics
  5. PLoS Pathogens
  6. PLoS Neglected Tropical Diseases
  7. PLoS Hubs – Clinical Trials

Work Required

1.  Based on current functionality, enhance PHP scripts to parse a different format Apache log file and store the data in a MySQL database.

a.  TBD - appropriate usage stats to store in a MySQL database.

2.  Allow for input variables to shell scripts to specify which type of log file and/or journal to parse.

Create COUNTER reports for individual articles (site-wide and per ip-range)

New Functionality

  1. Create COUNTER compliant reports for individual articles by month and year
  2. Full-text article requests
  3. PDF requests
  4. XML requests
  5. Create summary of article requests since an article was published
  6. Total number of full-text article requests
  7. Total number of PDF requests
  8. Total number of XML requests
  9. Create COUNTER compliant reports of full-text article requests by month and journal
  10. Create COUNTER compliant reports of full-text article requests by year and journal

Work Required

1.  Enhance current PHP scripts to parse log files per article DOI.

2.  Store data in a MySQL database.

Enhance PLoS Reports Drupal module

New Functionality

1.  Create visualization for the top article by institution MySQL table.

2.  Based on existing functionality in the PLoS Reports Drupal module, create new displays for individual articles.

3.  Add reports required for COUNTER compliance (http://www.projectcounter.org/r3/r3_E.doc).

a.  Journal Report 1: Number of Successful Full-Text Article Requests by Month and Journal

b.  Database Report 1: Total Searches and Sessions by Month and Database

4.  Update CSV downloads to be COUNTER compliant (http://www.projectcounter.org/r3/r3_F.doc).

Work Required

1.  Enhance current PHP scripts to parse log files per article DOI.

  1. Store stats in MySQL database.

3.  Add graphing of statistics with PHP/SWF Charts.

Create REST API for article level metrics

New Functionality

The PLoS Reports Drupal module will need a REST-based URI to return the following information:

1. Return the following article statistics through an XML representation:

a.  Total number of full-text article requests for day, month, year.

b.  Total number of PDF requests for day, month, year.

c.  Total number of XML requests for day, month, year.

2.  View COUNTER reports for:

a.  A publisher (“overview” of PLoS COUNTER reports)

b.  A journal

c.  An article

Work Required

1.  Update PLoS Reports Drupal to pull individual article stats from a MySQL database through a REST-based URI on the journal id, article id, etc.

2.  Generate and return an XML representation for GET (read) requests.

a.  Format TBD.

b.  If a GET request is for article data, then the rank of the article within the journal should always be returned (e.g. #n out of #n-total articles).

REST resources:

Resource / Description
articleid / The article ID is a unique alphanumeric string for each article (e.g. journal.pone.0000425).
journalid / The journal ID is a unique alpha string for each journal (e.g. pone, pntd).
month / The month an article was published.
year / The year an article was published.
views / Can be “total”, “article”, “xml” or “pdf”.

Proposed REST-based URI:

http://www.plosreports.org/plosreports/api/article/<articleid>/<views>/<year>/<month>

-or-

http://www.plosreports.org/plosreports/api/journal/<journalid>/<views>/<year>/<month>

-or-

http://www.plosreports.org/plosreports/api/overview

Examples:

To retrieve total views and rank in that journal for an article:

http://www.plosreports.org/plosreports/api/article/journal.pone.0000425

To retrieve total views for an article during a particular year:

http://www.plosreports.org/plosreports/api/article/journal.pone.0000425/total/2008

To retrieve PDF views for an article during a particular month and year:

http://www.plosreports.org/plosreports/api/article/journal.pone.0000425/pdf/2008/2

View COUNTER reportsfor a publisher:

http://www.plosreports.org/plosreports/api/overview

View COUNTER reports for a journal:

http://www.plosreports.org/plosreports/api/journal/<journalid>

View COUNTER reports for a specifc article

http://www.plosreports.org/plosreports/api/article/<articleid

Proposed XML representation for GET (based on Atom XML)

<?xml version="1.0"?>

<entry xmlns="http://www.w3.org/2005/Atom">

<journal>

<id>pone</id>

</journal>

<article>

<id>journal.pone.0000425</id>

<rank>23</rank>

</article>

<updated>2005-10-07T17:17:08Z</updated>

<views type="pdf" />

<total>1054</total>

</views>

</entry>