LIBREAS.Library Ideas

Institutionelles Publikationsaufkommen in Open Access Zeitschriften — ein Vorschlag mit R

Posted in LIBREAS.Visualisierung by libreas on 2. April 2013

Das DFG Programm Open Access Publizieren fördert Hochschulen, die dauerhafte und verlässliche Strukturen für die Begleichung von Artikelbearbeitungsgebühren, die für die Veröffentlichung in Open-Access-Zeitschriften erhoben werden, an ihrer Einrichtung etablieren. In diesem Sinne erfordert die Antragstellung belastbare Angaben zum entsprechenden Publikationsaufkommen der Hochschule in OA-Zeitschriften und eine transparente Darlegung der Datenerhebung.

Die Universität Bielefeld beteiligt sich mit ihrem Publikationsfonds bereits seit 2011 an der DFG-Ausschreibung. Um die jährlichen Berichtserfordernisse mit möglichst geringem Aufwand über das Institutionelle Repositorium „PUB — Publikationen an der Universität Bielefeld“ zu beantworten, basiert das Berichtswesen auf Standards der Digital Library Community (SRU, CQL, MODS) und Routinen der statistischen Programmiersprache R. Somit lassen sich Datenerhebung und -auswertung nicht nur transparent nachvollziehen und reproduzieren, sondern, dank der Standardisierung, auch an anderen Hochschulen wiederverwenden.

Eine Beispiel für eine Anforderung der DFG im Programm „Open Access Publizieren“ ist die Darlegung des institutionellen Publikationsaufkommens in Open-Access-Zeitschriften je Verlag.

Abbildung 1: Jährliche Verteilung Open Access Zeitschriftenartikel an der Universität Bielefeld auf Verlage

Abbildung 1: Jährliche Verteilung Open Access Zeitschriftenartikel an der Universität Bielefeld auf Verlage

Abbildung 1 stellt die fünf häufigsten Verlage, auf die Open-Access-Veröffentlichungen an der Universität Bielefeld entfallen, dar. Ein solches Diagramm erlaubt die kontinuierliche Prüfung möglicher Mitgliedschaften oder Vorauszahlungen. Solche Angebote der OA-Verlage versprechen eine Verringerung des Verwaltungsaufwands für Forschende und Bibliothek.

Ebenfalls zeigt die Abbildung, dass sich die Publikationsmöglichkeiten deutlich ausdifferenzieren. Zeitschriftenartikel in Verlagen, die zugunsten der Übersichtlichkeit in die Kategorie „other“ zusammengefasst sind, veröffentlichen meistens sehr junge oder kleine Journals. Diese sind häufig (noch) nicht Teil der Master Journal List des Web of Science und lassen sich daher am Besten über eine Erhebung vor Ort eruieren. Am Beispiel der Universität Bielefeld umfasst die Kategorie „other“ OA-Journale wie das Journal of Social Science Education (JSSE), das an der UB Bielefeld gehostet wird, oder die von der DFG geförderte Zeitschrift Social Work and Society.

Im folgenden werden die einzelnen Schritte zur Gewinnung der Abbildung 1 mit R dargelegt:

1. Schritt: Publikationsaufkommen 2007 – 2012

Alle in PUB verzeichneten Publikationen für den Zeitraum 2007 — 2012 lassen sich über SRU/CQL abfragen.

Die standardmäßige Ausgabe der Daten erfolgt in MODS. Relevante Felder lassen sich mit R wie folgt parsen.

require(RCurl)
require(XML)

#all

url <- "http://pub.uni-bielefeld.de/sru?version=1.1&operation=searchRetrieve&query=publishingYear%20%3E%202006%20AND%20publishingYear%20%3C%202013&maximumRecords=1000"

id <- c()
year <- c()
genre <- c()

for(i in seq(0, 40000, by = 1000)) {
  
  url.d<-paste(url, "&startRecord=", i , sep = "")
  
  doc <- xmlTreeParse(url.d, useInternal=T)
  id.tmp <- xpathSApply(doc,"//r:recordInfo//r:recordIdentifier", 
  namespaces= (c(r="http://www.loc.gov/mods/v3")) ,xmlValue)
  
  year.tmp <- xpathSApply(doc,"//r:dateIssued", 
  namespaces= (c(r="http://www.loc.gov/mods/v3")) ,xmlValue)
  
  genre.tmp <- xpathSApply(doc,"//r:genre", 
  namespaces= (c(r="http://www.loc.gov/mods/v3")) ,xmlValue)
  
  if(length(id.tmp) == 0)
    break
  else
    id <- c(id, id.tmp)
  year <- c(year,year.tmp)
  genre <- c(genre,genre.tmp)
  
  df.tmp <- data.frame (id, year, genre)
  
}

Hieraus lässt sich sowohl die Gesamtanzahl aller registrierten Publikationsnachweise eruieren wie die Anzahl der Zeitschriftenartikel im Zeitraum 2007 bis 2012.

#gesamt
dim(df.tmp)

#Zeitschriftenartikel
nrow(df.tmp[df.tmp$genre == "article",])

#Anteil in %

nrow(df.tmp[df.tmp$genre == "article",]) / nrow(df.tmp) *100

Insgesamt sind zum 31.3.2013 13.393 Publikationen registriert, 5.960 Veröffentlichungen entfallen auf Zeitschriftenartikel, was einen Anteil am Publikationsaufkommen von rund 44,5 % entspricht.

2. Schritt: Gewinnung ISSN

Der zweite Schritt umfasst die Aggregation der ISSN oder EISSN, die für den eindeutigen Abgleich mit der Journalliste des DOAJ benötigt wird:


#subset journal article

my.journal <- df.tmp[df.tmp$genre == "article",]

#query for issn/eissn

df.enrich <- data.frame()

u <-  "http://pub.uni-bielefeld.de/sru?version=1.1&operation=searchRetrieve&query=id=%22"

for (i in unlist(my.journal$id)) {
  
  url.t <-paste(u,i,"%22", sep="")
  
  doc = xmlTreeParse (url.t, useInternal=T)

issn <- xpathSApply(doc,"//r:relatedItem//r:identifier[@type='issn']",namespaces= (c(r="http://www.loc.gov/mods/v3")) ,xmlValue)
  
  if (length(issn) == 0) {
    
    issn <- "notFound"
    
  } else { issn <- issn }


  df.all.tmp <- data.frame(i, issn)

  df.enrich <- rbind(df.enrich, df.all.tmp)

}


#join with data.frame 
journal.tmp <- merge(df.ernrich, my.journal, by.x="i", by.y="id")

ISSN ist in PUB kein Pflichtfeld, um den Registrierungsaufwand der Forschenden möglichst niedrigschwellig zu gestalten. Fehlende ISSN können jedoch ex post durch den PUB Support nachgepflegt werden.

Eine solche Tabelle zur nachträglichen Datenpflege lässt sich mit R wie folgt generieren:

# exclude records without issn

#subset
my.miss <- journal.tmp[journal.tmp$issn =="notFound",]

nrow(my.miss) # number of records without issn  (174)

#export csv

wirte.csv(my.miss, "missingISSN.csv")

3. Schritt: Abgleich DOAJ

Das Directory of Open Access Journals (DOAJ) bietet eine Liste aller verzeichneten Open-Access-Zeitschriften als csv-Download an:

http://www.doaj.org/doaj?func=csv

Das Laden und der Abgleich über ISSN und EISSN mit R:


#load DOAJ data
doaj <- read.csv("http://www.doaj.org/doaj?func=csv", header = TRUE, sep=",")

#merge by ISSN/EISSN

doaj.issn <- subset(journal.tmp, issn %in% doaj$ISSN)

doaj.essn <- subset(journal.tmp, issn %in% doaj$EISSN)

#combine

doaj.comp <- rbind(doaj.issn, doaj.essn)

#add additional doaj info

test.1 <- merge(doaj.issn, doaj, by.x="issn",by.y="ISSN")

test.2 <- merge(doaj.essn, doaj, by.x="issn",by.y="EISSN")

colnames(test.2) <- colnames(test.1)

my.comp <- rbind(test.1, test.2)

#exclude duplicates

my.comp <- my.comp[!duplicated(my.comp$i),]

Insgesamt lassen sich so 496 Artikel in DOAJ-Zeitschriften an der Universität Bielefeld für die Jahre 2007 – 2012 identifizieren.

4. Schritt Datenexploration

Das data.frame my.comp bildet nun die Datengrundlage für die Visualisierung der Verteilung nach Verlagen, in denen die zuvor identifizierten Zeitschriftenartikel erschienen sind.


require(ggplot2)

#normalize year
my.comp$year <- as.numeric(format(my.comp$year, format = "%Y")) 

#relevel Publisher 

my.comp$Publisher <- factor (my.comp$Publisher, levels = c(rownames(data.frame(rev(sort(table(my.comp$Publisher)))))))

levels(my.comp$Publisher)[6:length(levels(my.comp$Publisher))] <- "other"

#get data.frame for ggplot2 plotting
my.mat <- as.matrix(table(my.comp$Publisher,my.comp$year))

my.publish <- data.frame(my.mat)

#plot

p <- ggplot(my.publish, aes(as.Date(Var2), Freq, group =Var1)) + 
geom_line(aes(colour = Var1, show_guide=FALSE)) + 
geom_point() + 
theme_bw() +
scale_colour_brewer("OA Publisher",palette=2, type="qual") + 
xlab("Year") + ylab("UNIBI Contributions") + 
opts(legend.key=theme_rect(fill="white",colour="white"))

#save plot
ggsave(plot = p, "oapublisher2.png", h = 3.08, w = 7.2)

Zusammenfassung

Die vorgestellte Skizze erhebt Publikationsdaten für die Begleitung des Open-Access-Publizieren in wissenschaftlichen Zeitschriften mittels R. Sie legt das lokale Publikationsaufkommen dar und gleicht es mit dem DOAJ ab. Da die verwendeten Protokolle und Formate auf Digital-Library-Standards beruhen, können Hochschulen und akademische Einrichtungen, deren Repositorien oder Forschungsinformationssysteme diese Standards unterstützen, die vorgestellten Methoden wiederverwenden.

Die R-Routinen, die für das Berichtswesen des Publikationsfonds an der Universität Bielefeld verwendet werden, werden im Laufe des Jahres 2013 als Funktionsaufrufe reformuliert und als Open Source Distribution mit weiteren Auswertungsmöglichkeiten veröffentlicht.

(Najko Jahn)

Najko Jahn ist zugleich an der Universitätsbibliothek Bielefeld tätig

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: