> 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"
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="")) }
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
> 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