Processing a page

Processing works on a page

> cat("OpenAlex - Start",date(),"\n")
OpenAlex - Start Mon Mar 11 04:51:31 2024 
> wrk <- file("works.csv","w",encoding="UTF-8")
> net <- file("Ci.tmp","w",encoding="UTF-8")
> cat("% OpenAlex",date(),"\n",file=wrk)
> cat("ind;Wid;hit;sWname;Sid;pYear;pDate;type;lang;vol;iss;fPage;lPage;fAName;title\n",file=wrk)
> works <- eDict()
> nr <- nrow(wr); n <- 0
> for(i in 1:nr){
+   Wid <- getID(wr$id[[i]])
+   hit <- TRUE
+   Sid <- getID(wr$primary_location[i,]$source$id)
+   pYear <- wr$publication_year[[i]]
+   pDate <- wr$publication_date[[i]]
+   type <- wr$type[[i]]
+   lang <- wr$language[[i]]
+   vol <- wr$biblio[i,]$volume
+   iss <- wr$biblio[i,]$issue
+   fPage <- wr$biblio[i,]$first_page
+   lPage <- wr$biblio[i,]$last_page
+   title <- wr$title[[i]]
+   fAName <- wr$authorships[[i]]$author$display_name[1]
+   sWname <- Gname(fAName,type,pYear,vol,fPage)
+   n <- n+1
+   cat(n,Wid,hit,sWname,Sid,pYear,pDate,type,lang,vol,iss,fPage,lPage,fAName,title,
+     sep=";",file=wrk); cat("\n",file=wrk)
+   works[[Wid]] <- c(sWname=sWname,Sid=Sid,fAName=fAName)
+ }
> close(net); close(wrk)
> cat("Stop",date(),"\n")
Stop Mon Mar 11 04:51:32 2024 
> works[["W2113308428"]]
                        sWname                            Sid                         fAName 
       "Miguel_PAS(2015)NA:22"                  "S2738013834" "Pedro Antonio Sánchez Miguel" 

Package OpenAlex

keys = ls

eDict <- function(size=10000L) new.env(hash=TRUE,parent=emptyenv(),size=size)

putWork <- function(Wid,sWname=""){
  if(exists(Wid,env=works,inherits=FALSE)){
    if(works[[Wid]]["sWname"]!=sWname){
      if(works[[Wid]]["sWname"]=="") {works[[Wid]]["sWname"] <- sWname} else {
        cat("W",length(works),works[[Wid]]["sWname"],sWname,"\n")
        flush.console() }}
  } else works[[Wid]] <- c(wind=length(works)+1,sWname=sWname)
  return(works[[Wid]]["wind"]) 
}

putSrc <- function(Sid,Sname=NA){
  if(exists(Sid,env=srces,inherits=FALSE)){
    if(srces[[Sid]]["Sname"]!=Sname){
      if(is.na(srces[[Sid]]["Sname"])) {srces[[Sid]]["Sname"] <- Sname} else {
        cat("S",length(srces),srces[[Sid]]["Sname"],Sname,"\n")
        flush.console() }}
  } else srces[[Sid]] <- c(sind=length(srces)+1,Sname=Sname)
  return(srces[[Sid]]["sind"]) 
}

putAuth <- function(Aid,Aname=NA){
  sAnam <- ifelse(is.na(Aname),NA,sAname(Aname)) 
  if(exists(Aid,env=auths,inherits=FALSE)){
    if(auths[[Aid]]["Aname"]!=Aname){
      if(is.na(auths[[Aid]]["Aname"])) {auths[[Aid]]["Aname"] <- Aname} else {
        cat("A",length(auths),auths[[Aid]]["Aname"],Aname,"\n")
        flush.console() }}
  } else auths[[Aid]] <- c(aind=length(auths)+1,Aname=Aname,sAname=sAnam)
  return(auths[[Aid]]["aind"]) 
}

.Ty <- c("article"="AR","book-chapter"="BC","dissertation"="DS","book"="BK","dataset"="DS",        
  "paratext"="PT","other"="OT","reference-entry"="RE","report"="RP","peer-review"="PR",    
  "standard"="ST","editorial"="ED","erratum"="ER","grant"="GR","letter"="LT")

getID <- function(URLid) substring(URLid,22)

firstup <- function(n) {n <- tolower(n); substr(n,1,1) <- toupper(substr(n,1,1)); n}

Gname <- function(name,ty,py,vl,fp){L <- firstup(unlist(strsplit(name," "))); k <- length(L)
  H <- paste(substr(L[k],1,8),paste(substr(L[1:(k-1)],1,1),sep="",collapse=""),sep="_")
  if(ty=="article") paste(H,"(",py,")",vl,":",fp,sep="") else
    paste(H,"(",py,")",.Ty[ty],sep="")
}

sAname <- function(name){L <- firstup(unlist(strsplit(name," "))); k <- length(L)
  H <- paste(L[k],paste(substr(L[1:(k-1)],1,1),sep="",collapse=""))
}

Processing works, authors, sources on a page

source("https://raw.githubusercontent.com/bavla/OpenAlex/main/code/OpenAlex.R")
# source("OpenAlex.R")

cat("OpenAlex2Pajek - Start",date(),"\n")
wrk <- file("works.csv","w",encoding="UTF-8")
ci <- file("Ci.tmp","w",encoding="UTF-8")
wa <- file("WA.tmp","w",encoding="UTF-8")
wj <- file("WJ.tmp","w",encoding="UTF-8")
cat("% OpenAlex",date(),"\n",file=wrk)
cat("% OpenAlex",date(),"\n",file=wa)
cat("% OpenAlex",date(),"\n",file=wj)
cat("% OpenAlex",date(),"\n",file=ci)
cat("ind;Wid;hit;sWname;Sid;pYear;pDate;type;lang;vol;iss;fPage;lPage;fAName;title\n",file=wrk)
works <- eDict(); srces <- eDict(); auths <- eDict();
nr <- nrow(wr); n <- 0
for(i in 1:nr){
  Wid <- getID(wr$id[[i]]); hit <- TRUE
  Sid <- getID(wr$primary_location[i,]$source$id)
  Sname <- wr$primary_location[i,]$source$display_name 
  pYear <- wr$publication_year[[i]]; pDate <- wr$publication_date[[i]]
  type <- wr$type[[i]]; lang <- wr$language[[i]]
  vol <- wr$biblio[i,]$volume; iss <- wr$biblio[i,]$issue
  fPage <- wr$biblio[i,]$first_page; lPage <- wr$biblio[i,]$last_page
  title <- wr$title[[i]]; tit <- gsub(";",",",title)
  fAName <- wr$authorships[[i]]$author$display_name[1]
  sWname <- Gname(fAName,type,pYear,vol,fPage)
  n <- n+1; u <- putWork(Wid,sWname)
  if(!is.na(Sid)) {j <- putSrc(Sid,Sname); cat(u,j,"\n",file=wj)}
  cat(u,Wid,hit,sWname,Sid,pYear,pDate,type,lang,vol,iss,fPage,lPage,fAName,tit,
    sep=";",file=wrk); cat("\n",file=wrk)
  for(w in wr$referenced_works[[i]]) {
    vid <- getID(w); v <- putWork(vid,"")
    cat(v,vid,FALSE,"",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,sep=";",file=wrk)
    cat("\n",file=wrk); cat(u,v,"\n",file=ci) }
  auts <- wr$authorships[[i]]$author; na <- nrow(auts)
  for(a in 1:na) {
    Aid <- getID(auts$id[a]); v <- putAuth(Aid,Aname=auts$display_name[a])
    cat(u,v,"\n",file=wa) }
}
close(ci); close(wj); close(wa); close(wrk)
cat("works:",length(works),"authors:",length(auths),"sources:",length(srces),"\n")
cat("OpenAlex2Pajek - Stop",date(),"\n")
> rm(works,auths,srces)
> source("OpenAlex2Pajek.R")
OpenAlex2Pajek - Start Tue Mar 12 07:16:37 2024 
A 262 Per Hølmich Per Hölmich 
W 1301 Schiftan_GS(2015)18:238  
works: 2504 authors: 414 sources: 63 
OpenAlex2Pajek - Stop Tue Mar 12 07:16:38 2024 

Processing a sequence of works

> openWorks <- function(query=NULL,list=NULL,file=NULL){
+   WC <<- new.env(hash=TRUE,parent=emptyenv())
+   if(length(list)==0) return(NULL) 
+   WC$L <- list
+   WC$i <- 1
+   return(list[[WC$i]])
+ }
> 
> nextWork <- function(){
+   WC$i <- WC$i+1 
+   if(WC$i>length(WC$L)) return(NULL)
+   return(WC$L[[WC$i]]) 
+ }
> 
> processWork <- function(w) cat(WC$i,w,"\n")
> 
> closeWorks <- function() rm(WC,inherits=TRUE)
> 
> N <- c("a","b","c","d")
> w <- openWorks(list=N)
> ls.str(WC)
i :  num 1
L :  chr [1:4] "a" "b" "c" "d"
> while(!is.null(w)){
+   processWork(w)
+   w <- nextWork()
+ }
1 a 
2 b 
3 c 
4 d 
> ls.str(WC)
i :  num 5
L :  chr [1:4] "a" "b" "c" "d"
> closeWorks()
> ls.str(WC)
Error in ls.str(WC) : object 'WC' not found




OpenAlex; OpenAlex 2 Pajek

vlado/work/bib/alex/page.txt · Last modified: 2024/03/14 15:54 by vlado
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki